你没有那么多经验,所以需要帮助。
我正在尝试从数组中获取列表,但它只给我第一个数组项而不是全部
这是我的代码
我从数据库查询
获取此信息Array ( [item] => hot, categories, activity )
下面是我的foreach循环
$sorted = $order;
echo '<pre>';
print_r($sorted);
echo '</pre>';
$temp_nav = array();
foreach ($sorted as $key) {
if(isset($navigation[$key]))
$temp_nav[$key] = $navigation[$key];
}
$navigation = $temp_nav;
echo '<pre>';
print_r($navigation);
echo '</pre>';
$ order print_r结果在这里
Array
(
[0] => hot
[1] => categories
[2] => activity
)
现在我从print_r($sorted);
得到的结果如下
Array
(
[0] => hot
[1] => categories
[2] => activity
)
但是当我在foreach循环中检查时,它只输出如下的第一项
以下rewsult for $ navigation
Array
(
[hot] = Array
(
[url] => ./url
[lable] => Hot Items
)
)
但我只想要下面的价值
array(
'hot',
'categories',
'activity'
)
那么我怎样才能编写代码,这样我就可以得到结果所有项目但不仅仅是第一项
答案 0 :(得分:0)
你正在过滤
if(isset($navigation[$key]))
并且如图所示,显而易见$navigation
只有列表{'hot','categories','activity'}
中的“热门”键
如果我的假设错了,请向我们提供print_r($navigation)
答案 1 :(得分:0)
如果我假设这是你想要实现的目标..
$order= array("hot","categories","activity");
$navigation= array(
"hot" => array("url"=> "some url", "label" => "some label"),
"categories" => array("url"=> "some url", "label" => "some label")
);
$navigation_keys = array_keys($navigation);
$array_final = array_intersect($order, $navigation_keys);
print_r($array_final);
这将打印:
Array ( [0] => hot [1] => categories )
说明: 如果你想检查导航数组中的键是否存在于你的订单数组中,你可以使用array_keys创建一个新的键数组,而不是交叉,这只会创建一个存在于你的订单数组中的键数组。