#php #arrays #function
#php #массивы #функция
Вопрос:
Что я здесь делаю не так, что заставляет меня получать это сообщение?
function numbered_array( $array ) {
for ( $i = 0; $i < count( $array ); $i ) {
echo $i . ": ";
echo $array[$i] . "<br/>n";
}
}
У меня есть эта проблема только внутри функции. Когда я использую один и тот же код сам по себе, например
for ( $i = 0; $i < count( $my_array ); $i ) {
echo $i . ": ";
echo $my_array[$i] . "<br/>n";
}
это работает просто отлично.
Кажется, у меня возникла эта проблема с ЛЮБОЙ функцией, которой массивы передаются в качестве аргументов.
(Для справки, я работаю с 1-мерным массивом строковых значений)
Комментарии:
1. Почему бы просто не использовать foreach ? Вы можете получить только значение или пару ключ / значение, и вам не придется беспокоиться о непоследовательных ключах.
2. В конкретном случае, приведенном выше, это было бы легко. Но как только я сравниваю несколько значений между несколькими массивами, работать с циклом for намного проще.
Ответ №1:
Вот решение вашей проблемы.
function numbered_array(array $array)
{
foreach ($array as $key => $value) {
echo $key . ": ";
echo $value . "<br/>n";
}
}
$array = array("test","test","test","test",);
numbered_array($array);
Вывод
0: test<br/>
1: test<br/>
2: test<br/>
3: test<br/>
Комментарии:
1. Я до сих пор не совсем понимаю, почему возникла эта проблема, но, по крайней мере, я знаю, как ее обойти.
2. Обычно ошибка смещения возникает, когда вы пытаетесь получить доступ к массиву с помощью ключа, который не существует. Но у вашего кода нет проблем, когда я его тестирую. Возможно, массив, который вы передали функции, соответствует ошибке.