在不使用foreach的情况下在数组中创建键?

时间:2014-02-11 12:31:31

标签: php arrays

有时我需要在数组中创建密钥(如果它不存在)。

例如:

$dataAgent['Paul'] = array('Sale' => 4,'Conv' => 1.5);
$dataAgent['Bill'] = array('Sale' => 6,'Conv' => 5.5);
$dataAgent['Tom'] = array('Sale' => 1);
$dataAgent['Jake'] = array('Sale' => 6,'Conv' => 10.5);
'Conv'数组中缺少

$dataAgent['Tom']密钥。

我使用以下代码检查是否存在“Conv'密钥:

foreach($dataAgent as &$agent) { 
  if (!isset($agent['Conv'])) { 
     $agent['Conv'] = 0; 
  }  
}

是否有替代方式而不是使用foreach和更好的可读性?

2 个答案:

答案 0 :(得分:2)

你将 以这种或那种方式循环遍历数组,这个键不会同时神奇地出现在所有元素中。你可以用不同的方式打扮。我最喜欢的可能是:

$dataAgent = array_map(function (array $data) { return $data + array('Conv' => 0); }, $dataAgent);

请注意,+运算符在此处不必使用isset

答案 1 :(得分:0)

以下是解决方案:

  1. 在形成阵列时放入此键。 OR
  2. 使用array_walk($ Your_array," your_function");

    function your_function($value, $key)
    {
    // put your logic here.
    }
    
  3. 了解更多信息:http://in3.php.net/array_walk