-2

我有一个关联数组,当我循环数组时,我尝试做出一个输出错误答案的语句。

foreach($search as $a=>$b)
{ 
  foreach($b as $c) {

      if($b == 'folder')
      {
        print_r($b);
        $dir = true;
      }
  }
}   

以下代码输出 0 和“文件夹”。当$b等于 0 时,它是不正确的,因为$b应该匹配“文件夹”。

print_r 的$search

array (size=3)
  'status' => string 's_search' (length=8)
  'files' => 
    array (size=1)
      'file' => 
        array (size=2)
          0 => 
            array (size=3)
              ...
          1 => 
            array (size=3)
              ...
  'folders' => 
    array (size=1)
      'folder' => 
        array (size=3)
          'id' => string '1081483096' (length=10)
          'name' => string 'asdf' (length=4)
          'match_type' => 
            array (size=3)
              ...
4

3 回答 3

1

由于您没有指定您正在做什么,也没有指定您期望的输出,我假设您只对folders您的$search数组感兴趣。

foreach($search['folders'] as $k => $v) {
    if($k === 'folder') {
        print_r($v);
        $dir = true;
    }
} 
于 2013-08-22T05:19:11.833 回答
0

你不就是想要这个吗?

if (isset($search['folders']['folder'])) {
    var_dump($search['folders']['folder']);
    $dir = true;
}
于 2013-08-22T05:31:12.600 回答
0

这里$b是一个array. 所以,你应该before loop检查它是否是一个数组,比如,

foreach($search as $a=>$b)
{ 
    if(is_array($b) and !empty($b))
    {
       foreach($b as $c) {
          //your code
       }
    }
    elseif(is_string($b) and $b=='folder')
    {
        print_r($b);
        $dir = true;
    }
}
于 2013-08-22T05:15:32.840 回答