0

嗨,没有那么多经验的 php,所以需要帮助。

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

这是我的代码

我从我的数据库查询中得到这个

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 循环时,它只输出如下的第一个项目

下面是 $navigation 的结果

Array
(
    [hot] = Array
        (
            [url] => ./url
            [lable] => Hot Items
        )
)

但我只想要像下面这样的值

array(
    'hot',
    'categories',
    'activity'
)

那么我该如何编写代码,以便它为我提供所有项目的结果,而不仅仅是第一个项目

4

2 回答 2

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 创建一个新的键数组,而不是 intersect 只会创建一个存在于您的订单数组中的键数组。

于 2013-04-18T07:37:36.783 回答
0

你正在过滤

if(isset($navigation[$key])) 

并且很明显$navigation只有列表中的“热”键{'hot','categories','activity'}

如果我的假设是错误的,请向我们提供输出print_r($navigation)

于 2013-04-18T07:32:34.043 回答