#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] выдает ошибку