Почему я получаю «Уведомление: неопределенное смещение» из массивов, передаваемых в качестве аргументов?

#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. Обычно ошибка смещения возникает, когда вы пытаетесь получить доступ к массиву с помощью ключа, который не существует. Но у вашего кода нет проблем, когда я его тестирую. Возможно, массив, который вы передали функции, соответствует ошибке.