Я новичок в 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>';
?>
Как я могу решить эту проблему?
поместите это во внутренний echo preg_replace($key, $subvalue, $sentence) ."<br>\n"; foreach






Есть несколько уровней того, почему ваше решение не работает.
Я немного изменил ваш скрипт, чтобы убедиться, что он трижды перебирает список, каждый раз он повторяет вывод, и предложение сбрасывается до значения по умолчанию, чтобы его можно было изменить снова.
$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 должен убедиться, что правильный элемент из одного массива соответствует правильному элементу из другого.
надеюсь, это поможет
Большое спасибо. Это не ответ, это урок. Так что это мне очень помогает и показывает весь мыслительный процесс, что, я думаю, самое важное. Я пытался использовать цикл for и count(), но это не сработало, потому что я написал это неправильно! Я почти уверен, что есть и другие способы получить тот же результат, но это тот, который мне нужен!
После завершения первой замены предложение больше не содержит собаку или сладкое. Вам понадобится, возможно, массив предложений. $newSentences[] = preg_replace ....