PHP:获取foreach中的所有数组

时间:2013-04-18 07:22:36

标签: php arrays foreach

你没有那么多经验,所以需要帮助。

我正在尝试从数组中获取列表,但它只给我第一个数组项而不是全部

这是我的代码

我从数据库查询

获取此信息
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'
)

那么我怎样才能编写代码,这样我就可以得到结果所有项目但不仅仅是第一项

2 个答案:

答案 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创建一个新的键数组,而不是交叉,这只会创建一个存在于你的订单数组中的键数组。