我是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>';
?>
我该如何解决?
答案 0 :(得分:0)
关于您的解决方案无法正常工作的原因,有很多层次。
我稍微修改了脚本,以确保它在列表中循环三次,每次它回显输出并将句子重置为默认值,以便可以再次更改。
$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')
。该脚本假定第一个数组和第二个数组的大小始终相等。
第二个foreach循环中的if语句是确保一个数组中的正确元素与另一个数组中的正确元素匹配。
我希望这对您有帮助