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
Php 递归使用另一个数组替换具有特定键的数组_Php - Fatal编程技术网

Php 递归使用另一个数组替换具有特定键的数组

Php 递归使用另一个数组替换具有特定键的数组,php,Php,我有一个数组,其中keytype==“foo”的所有数组都必须替换为自定义数组。 基本上,我需要找到一个特定的数组,然后用其他数组替换它 这里的问题是,你可以很容易地替换一个数组,但是当你插入数组的数量时,你正在移动键,这样下一个数组就不会被替换了 任何帮助都将不胜感激 以下是我所拥有的: $array = array( array( 'options' => array( array( 'type' => 'foo'

我有一个数组,其中key
type==“foo”
的所有数组都必须替换为自定义数组。 基本上,我需要找到一个特定的数组,然后用其他数组替换它

这里的问题是,你可以很容易地替换一个数组,但是当你插入数组的数量时,你正在移动键,这样下一个数组就不会被替换了

任何帮助都将不胜感激

以下是我所拥有的:

$array = array(
   array(
     'options' => array(
        array(
          'type' => 'foo'
        ),
        array(
          'type' => 'foo'
        ),
        array(
          'type' => 'bar'
        )
      )
   ),
   array(
     'options' => array(
        array(
          'type' => 'bar'
        ),
        array(
          'type' => 'bar'
        ),
        array(
          'type' => 'foo'
        )
      )
   ),
);
我有一个数组,它应该替换
type==“foo”

$array_foo = array(
  array(
    'type' => 'custom'
  ),
  array(
    'type' => 'custom_2'
  ),
  array(
    'type' => 'anything'
  ),
);
以下是所需的输出:

$array = array(
   array(
     'options' => array(
        array(
          'type' => 'custom'
        ),
        array(
          'type' => 'custom_2'
        ),
        array(
          'type' => 'anything'
        ),
        array(
          'type' => 'custom'
        ),
        array(
          'type' => 'custom_2'
        ),
        array(
          'type' => 'anything'
        ),
        array(
          'type' => 'bar'
        )
      )
   ),
   array(
     'options' => array(
        array(
          'type' => 'bar'
        ),
        array(
          'type' => 'bar'
        ),
        array(
          'type' => 'custom'
        ),
        array(
          'type' => 'custom_2'
        ),
        array(
          'type' => 'anything'
        ),
      )
   ),
);

谢谢。

根据之前的帖子,更改代码的方式与以下代码类似:

$base = array("orange", "banana", "apple", "raspberry");
$replacements = array(0 => "pineapple", 4 => "cherry");
$replacements2 = array(0 => "grape");

$basket = array_replace($base, $replacements, $replacements2);
print_r($basket);
因此,使用您的方法,而不是使用数字或索引,我认为您可能可以通过写下foo来让替换项正常工作

您可能要了解的另一件事是数组合并递归,可在以下位置找到:

您在此处指出的问题与本文类似:

我希望这对您有所帮助。

以下是一种使用2个嵌套foreach循环和一个临时数组的方法:

并检查输出:

echo '<pre>' . print_r($array, true) . '</pre>';
echo“”。打印($array,true)。“”;

另请参见

到目前为止您尝试了什么?@AymDev simple foreach find array然后取消设置,然后array\u与array\u slice合并以插入新数据,而不是未设置的数据,但正如我所说的,它仅适用于您尝试的第一个创建的arrayGlad!编辑您的问题并发布您的尝试,这样我们就可以看到哪里出了问题并帮助您解决这个问题。“foo”并不是一个在帖子中不清楚的关键词,它只是为了展示一个演示。非常感谢。它工作得很好。因此,显然不需要创建递归函数:)
echo '<pre>' . print_r($array, true) . '</pre>';