【问题标题】:How to change the value of an specific associative array in PHP?如何更改 PHP 中特定关联数组的值?
【发布时间】:2014-02-22 16:56:32
【问题描述】:

我有一个动态生成的非常大的数组,名为$test_package_data。为了您的理解,我在下面给出数组 $test_package_data 的内容。

现在我想要实现的是转换数组键的值

$test_duration = ConvertTimeStampToTimeFormate($some_key['test_duration']);

简而言之,我想更新数组中每个位置的键 ['test_duration'] 的值。但不明白我应该如何遍历数组并达到预期的结果。

【问题讨论】:

  • 如果你生成这个数组,在生成时将值放入你需要的格式不是更好吗?

标签: php arrays multidimensional-array associative-array


【解决方案1】:

您可以循环访问$test_package_data['category_detail'][0]['test_detail']。所以代码会是这样的,

foreach($test_package_data['category_detail'][0]['test_detail'] as $key => $value){
    $test_package_data['category_detail'][0]['test_detail'][$key]['test_duration'] = 
    ConvertTimeStampToTimeFormate($value['test_duration']]);
}

【讨论】:

    【解决方案2】:

    如果键匹配'test_duration',您可以使用array_walk_recursive() 并调整值:

    array_walk_recursive($test_package_data, function(&$value, $key) {
        if ($key == 'test_duration') {
            $value = ConvertTimeStampToTimeFormate($value);
        }
    });
    

    【讨论】:

      【解决方案3】:

      虽然array_walk_recursive 是最好的,但这应该也可以。

      function changValue($dataArray) {
        foreach($dataArray as $key=>$val) {
         if(is_array($val)) {
           return changValue($val);
         } else {
           if ($key == 'test_duration') {
              $value = ConvertTimeStampToTimeFormate($value);
          }
         }
        }
      }
      
      changeValue($yourArray);
      

      【讨论】:

      • 你测试过这个吗?
      猜你喜欢
      • 2013-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-24
      • 2016-11-17
      • 1970-01-01
      • 2014-03-23
      • 2021-03-16
      相关资源
      最近更新 更多