我想将'BLOCKS'数组中的'baz'值替换为'baz'数组中标题匹配的数组。
我试过分解BLOCKS['baz'],然后循环遍历结果并执行str_replace,但没有成功。我相信还有一个更简洁直接的解决方案。
请参阅底部的"期望输出",了解我正在努力实现的目标。非常感谢!
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];
}
}
}