Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.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
用数组替换PHP关联数组值(字符串)_Php_Multidimensional Array_For Loop_Associative Array - Fatal编程技术网

用数组替换PHP关联数组值(字符串)

用数组替换PHP关联数组值(字符串),php,multidimensional-array,for-loop,associative-array,Php,Multidimensional Array,For Loop,Associative Array,我想用标题匹配的“baz”数组中的数组替换“BLOCKS”数组中的“baz”值 我尝试过分解块['baz',然后循环遍历结果并进行stru_替换,但没有效果。我相信有一个更简洁直接的解决方案 查看底部的期望输出,了解我试图实现的目标。非常感谢 BLOCKS array 0 => array 'foo' => string 'block1' (length=6) 'bar' => string

我想用标题匹配的“baz”数组中的数组替换“BLOCKS”数组中的“baz”值

我尝试过分解块['baz',然后循环遍历结果并进行stru_替换,但没有效果。我相信有一个更简洁直接的解决方案

查看底部的期望输出,了解我试图实现的目标。非常感谢

    BLOCKS

    array
      0 => 
        array
          'foo' => string 'block1' (length=6)
          'bar' => string '/uploads/commercial/pdf.pdf' (length=27)
          'baz' => string '372|371' (length=7)
      1 => 
        array
          'foo' => string 'block2' (length=6)
          'bar' => string '/uploads/commercial/pdf.pdf' (length=27)
          'baz' => string '371' (length=3)

    BAZ

    array
      372 => 
        array
          'wibble' => string 'building2' (length=9)
          'wobble' => int 235000
          'wubble' => string 'office|medical' (length=14)
      371 => 
        array
          'wibble' => string 'building1' (length=9)
          'wobble' => int 252000
          'wubble' => string 'office' (length=6)

    DESIRED OUTPUT

    array
      0 => 
        array
          'foo' => 'block1'
          'bar' => '/uploads/commercial/pdf.pdf'
          'baz' => array(
            372 => 
              array
                'wibble' => string 'building2' (length=9)
                'wobble' => int 235000
                'wubble' => string 'office|medical' (length=14)
            371 => 
              array
                'wibble' => string 'building1' (length=9)
                'wobble' => int 252000
                'wubble' => string 'office' (length=6)
            );

      1 => 
        array
          'foo' => string 'block2' (length=6)
          'bar' => string '/uploads/commercial/pdf.pdf' (length=27)
          'baz' => array(
            371 => 
              array
                'wibble' => string 'building1' (length=9)
                'wobble' => int 252000
                'wubble' => string 'office' (length=6)
            )              
          );
试试这个:

foreach ($blocks as &$block) {

    $bazIds = explode('|', $block['baz']);

    unset($block['baz']); // Keep it clean

    foreach ($bazIds as $bazId) {

        if (array_key_exists($bazId, $baz) {
            $block['baz'][$bazId] = $baz[$bazId];
        }
    } 
}

可以使用foreach遍历数组并检查键。如果您找到了所需的键,则将值放置在下面的代码中

foreach($BLOCKS as $key -> $value){
    if(is_array($value){
        foreach($BLOCKS[$key] as $key1 -> $value){
            if($key1=='baz'){
                //logic here for string split using token | and create a new array from value
                // You need to put $$ for using value as variable.
            }
        }
    }
}

用户是Gar信息技术的高级开发人员

请添加您迄今为止尝试过的代码。谢谢迈克,这就是我想要的。根据我所拥有的东西来创建我所需要的东西比直接替换它要干净得多。很抱歉,对S.O.来说是个新手,不知道如何接受它。他们不会在任何地方记录检查图标!