Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
str_替换多维数组PHP中的键_Php_Arrays_Str Replace - Fatal编程技术网

str_替换多维数组PHP中的键

str_替换多维数组PHP中的键,php,arrays,str-replace,Php,Arrays,Str Replace,我有一个多维数组,如下所示: Array ( [results] => Array ( [0] => Array ( [object_id] => 13 [id] => 13 [idno] => e00110-o00005-2010-PROG [display_label] => La Bohème / PUCCINI - 2010

我有一个多维数组,如下所示:

Array (
    [results] => Array (
        [0] => Array (
            [object_id] => 13
            [id] => 13
            [idno] => e00110-o00005-2010-PROG
            [display_label] => La Bohème / PUCCINI - 2010
            [ca_objects.description] => Libreto de Luigi Illica y Giuseppe Giacosa basado en Escenas de la vida bohemia de Henri Murger Nueva producción – Teatro Colón
            [ca_objects.type_id] => Programa de mano
        )
        //more data here
我正在尝试循环数组,并使用str_replace替换“object_id”键作为“new_id”

$str="object_id";//The string to search for

$rep="new_id";//The replacement string


foreach ($array as $value) {
   foreach ($value as $key2 => $value2) {
     foreach ($value2 as $key3 => $value3) {
      str_replace($str,$rep,$key3);
       echo $key3." : ".$value3."<br>"; //It gets printed with no changes
     }
    }
  }
$str=“object\u id”//要搜索的字符串
$rep=“new_id”//替换字符串
foreach($array作为$value){
foreach($key2=>$value2的值){
foreach($value2作为$key3=>$value3){
str_替换($str,$rep,$key3);
echo$key3.:“$value3.”
“;//打印时不做任何更改 } } }
上面的代码不起作用,你能看到我做错了什么吗?。 我试着用字符串代替变量,但也没用。
提前感谢。

…如果您确实想使用
str\u replace()

另一种方法-创建一个新数组,然后在旧数组上迭代并将值从该数组分配给新数组,同时更改所需的键:

$array['results'] = array_map(function($item){
  $item['new_id'] = $item['object_id'];      
  unset($item['object_id']);
  return $item;

}, $array['results']);
(如果有必要的话,这个将对数组重新排序)

有必要使用引用对数组进行迭代,以便修改会影响原始数组,而不是副本。

@One Trick Pony: 我按照你的建议创建了一个新数组。这正是我所需要的,我自己做的!!。下面的代码创建新数组。非常感谢你们帮助我

 $display=array();
    foreach ($array as $value) {
      foreach ($value as $value2) {
        $display [] = array (
                         'Id del objeto' => $value2['object_id'],
                         'Título' => $value2['display_label'],
                         'Descripción' => $value2['ca_objects.description'],
                         );
              }
    }

str_replace()
返回新字符串,它不会在适当的位置修改字符串。@Barmar谢谢!我真傻。我会继续研究。你真的想修改数组中的键,还是只想用修改过的键打印元素?@Barmar我想修改它们。
str\u replace()
用于对子字符串进行多次替换,但在你的示例中,整个键的匹配是精确的。您需要更换子串吗?谢谢!我喜欢新的阵列!谢谢我来试试代码。谢谢你提供的有用信息!我试过了,结果是数组没有键。像这个数组([results]=>Array([0]=>Array([id]=>13[idno]=>e00110-o00005-2010-PROG[display_label]//等等。我会尝试调试它以便学习。再次感谢!
foreach ($array as &$value) {
  foreach ($value as $key2 => &$value2) {
    $value2[$rep] = $value2[$str];
    unset($value2[$str]);
  }
}
 $display=array();
    foreach ($array as $value) {
      foreach ($value as $value2) {
        $display [] = array (
                         'Id del objeto' => $value2['object_id'],
                         'Título' => $value2['display_label'],
                         'Descripción' => $value2['ca_objects.description'],
                         );
              }
    }