Понимание массивов PHP

#php #arrays

#php #массивы

Вопрос:

Я новичок, и у меня есть очень простой вопрос о PHP-массивах

Код:

  While(!feof($file_handle))
  { 
     $SecondRow = fgets($file_handle); //gets row
     $trimmed = trim($SecondRow); //removes extra bits
     $replace = array("'"); 
     $finalstring = str_replace($replace, "_", $trimmed); //Still a string w/o "'"'s

     $CleanString = preg_split("/[s]*[,][s]*/", $finalstring); //creates the array

     //print_r($CleanString);    
     echo "Row " . $CleanString[1]. "<br/>"; //??????
   .....
 }//end while
 

открытый файл имеет следующее:

 0001,sparta 
0005,PURCHASING
 



Вопрос: Когда я повторяю «Строка». $array [0], я получаю первый столбец, как и ожидалось. Но когда я повторяю «Строка». $array [1], я получаю ошибку «Неопределенное смещение: 1». Когда строка считывается в массив (через preg_split), не установлены ли array[0]-> 0001 и array[1]-> sparta?

Спасибо.

Комментарии:

1. почему вы не используете explode(',', $finalstring) ?

2. вы просто пытаетесь получить значение каждого столбца в массив?

3. почему бы вам вместо повторения не выполнить print_r() или var_dump(), чтобы вы точно знали, что содержит $cleanString ? Эти две функции очень полезны для целей отладки.

4. Я попробовал explode(‘,’, $finalstring) и получил тот же результат. Я пытаюсь разбить строку на массив, чтобы я мог вставить в базу данных mysql. Я немного смущен тем, почему [o] соответствует назначению, а [1] нет

5. Ваш пример работает для меня. Покажите мне, как вы открываете файл?

Ответ №1:

Глядя на весь ваш код, вы, по сути, копируете встроенную функцию, например fgetcsv() , или один из ее эквивалентов.

Просто выберите один и готово 🙂

Что касается определения того, как использовать массив, как указано в комментариях, используйте print_r или var_dump() для руководства. Также ознакомьтесь с PHP-массивами

Комментарии:

1. Привет, explode(‘,’, $finalstring)

2. а .. я посмотрю на эту функцию. есть идеи относительно того, почему [1] выдает ошибку?

3. Спасибо за fgetcsv. Намного проще в использовании

4. Действительно. Если это то, что вы выбрали, отметьте это как ответ, щелкнув галочку. Добро пожаловать в StackOverflow.

Ответ №2:

Это потому fgets() , что вы получаете одну строку за раз (одну строку за «цикл»).

Комментарии:

1. Какое это имеет отношение к тому, на сколько / несколько частей разбивается каждая строка?

2. Он говорит echo "Row " . $array[0] : » итак, я опубликовал, почему он не получает array [1] . Теперь я вижу, что он действительно спрашивал о столбцах, а не о строках.

3. правильно. Извините за путаницу. Я понимаю fgets, просто немного смущен b.c [1] выдает ошибку