我在PHP初学者。
我的目的是打印三句话用多维数组:
但我能打印的唯一一句话就是“猫臭”。我试过很多东西。因此,这里的代码:
<?php
$sentence = 'dogs are sweet';
$animals = array('@dogs@' => array('cats', 'birds', 'snails'),
'@sweet@' => array('smelly', 'beautiful', 'sticky'));
foreach ($animals as $key => $value)
{
foreach ($value as $subkey => $subvalue)
{
$sentence = preg_replace($key, $subvalue, $sentence);
}
}
echo $sentence . '</br>';
?>
我怎样才能解决这个问题?
有多层,为什么你的解决方案不起作用。
我稍微改变了你的脚本,以确保它列表循环三次,每次呼应输出和句子被重置为它的默认值,以便可以再次改变。
$animals = array('@dogs@' => array('cats', 'birds', 'snails'),
'@sweet@' => array('smelly', 'beautiful', 'sticky'));
for ($i = 0; $i < count(reset($animals)); $i++) {
$sentence = 'dogs are sweet';
foreach ($animals as $key => $value)
{
foreach ($value as $subkey => $subvalue)
{
if ($subkey === $i) {
$sentence = preg_replace($key, $subvalue, $sentence);
}
}
}
echo $sentence . "<br />";
}
部分count(reset($animals))
计数$animals
阵列的第一元素的值。因此,在这种情况下array('cats', 'birds', 'snails')
。脚本假设在第一和第二阵列是总是相等的大小。
if语句在二级foreach循环是确保正确的元素从一个阵列与来自其他合适的元素相匹配。
我希望这有帮助