【问题标题】:how to get array key dynamically for checking the condition in php?如何动态获取数组键以检查php中的条件?
【发布时间】:2011-03-25 07:33:04
【问题描述】:

我有一个数组,例如


$test_input= array(
  0=> array(
    "task" => 'ColumnTree Example',
    "duration" => '3 hours',
    "user"=> '',
    "uiProvider" => 'col',
    "cls" => 'master-task',
    "iconCls" => 'task-folder',
    'children'=> array(
      0 => array(
        "task" => 'Abstract rendering in TreeNodeUI',
        "duration" => '15 min',
        "user" => 'Jack Slocum',
        "uiProvider" => 'col',
        "leaf" => true,
        "iconCls" => 'task'
      ),
      array(
        "task" => 'Test and make sure it works',
        "duration" => '1 hour',
        "user" => 'Jack Slocum',
        "uiProvider" => 'col',
        "leaf" =>true,
        "iconCls" =>'task'
      )
    )
  ),
  array(
    "task" => 'Custom Field Example',
    "duration" => '2 1/2 hours',
    "user" => '',
    "uiProvider" => 'col',
    "cls" => 'master-task',
    "iconCls" => 'task-folder',
    'children'=>array(
      0 => array(
        "task" =>'Implement "Live Search" on extjs.com from Alex',
        "duration" =>'1 hour',
        "user" =>'Jack Slocum',
        "uiProvider" =>'col',
        "leaf" =>true,
        "iconCls"=> 'task'
      ),
      array(
        "task"=>'Extend TwinTrigger',
        "duration"=>'30 min',
        "user"=>'Jack Slocum',
        "uiProvider"=>'col',
        "leaf"=>true,
        "iconCls"=>'task'
      )
    )
  ),
  array(
    "task"=>'Foo Bar Item',
    "duration"=>'3 hours',
    "user"=>'',
    "uiProvider"=>'col',
    "cls"=>'master-task',
    "iconCls"=>'task-folder',
    'children'=>array(
      0 => array(
        "task"=>'Abstract rendering in TreeNodeUI',
        "duration"=>'15 min',
        "user"=>'Jack Slocum',
        "uiProvider"=>'col',
        "leaf"=>true,
        "iconCls"=>'task'
      ),
      array( 
        "task"=>'Create TreeNodeUI with column knowledge',
        "duration"=>'45 min',
        "user"=>'Jack Slocum',
        "uiProvider"=>'col',
        "leaf"=>true,
        "iconCls"=>'task'
      )
    )
  )
);

我想做一些事情。通过检查条件

if($key=="task")
 {
   something/.........
 }

所以这里不是静态地将键值作为“任务”。我需要它应该是动态的。 我正在使用array_map 映射我的函数和数组。请给我一些关于如何做到这一点的例子。

【问题讨论】:

  • 请举例说明你是如何使用它的。
  • 您使用的是哪个 PHP 版本?使用foreach 可能更容易。
  • 格式化这个数组几乎让我清醒了。

标签: php arrays static key


【解决方案1】:

您可以使用 foreach 语句吗? http://php.net/manual/en/control-structures.foreach.php

【讨论】:

    【解决方案2】:

    您可以为此使用 foreach。无论您是否使用 foreach 来执行此任务,但您必须在执行此操作时进行检查。

    因为通过使用 foreach 您可以获得键值对,但要检查某些内容您必须设置条件。

    【讨论】:

      【解决方案3】:

      从你的数据结构看来,你需要做recursion。试试这个代码:

      function walk_array($array, &$returnData, $depth = 0)
      {
          $depth++;
          foreach( $array as $key=>$value)
          {
              $returnData[] = $value['task'];
      
              if( isset( $value['children'] ) && is_array( $value['children'] ) )
              {
                  walk_array($value['children'], &$returnData, $depth);
              }
          }
      }
      

      像这样测试它:

      $returnData = array();
      walk_array($test_input, &$returnData);
      echo implode("<br />", $returnData);
      

      关于递归的注意事项 是,设计时要小心 代码。一个小错误可能会结束 无限循环。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-11
        • 2016-08-04
        • 2017-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多