Не вызначана зрушэнне 1

Не вызначана зрушэнне: 1

Добры дзень ... Я сутыкнуўся з праблемай, што не вызначана зрушэнне: 1 у радку 3. Я не магу зразумець, што які тып памылкі гэта. Можа хто-небудзь сказаць мне, што чаму такая памылка ўзнікае ў PHP

Undefined зрушэнне ў лініі: 3

    foreach ($lines as $line)
    {
      list($var,$value) = explode('=', $line); //line 3
      $data[$var] = $value;
    }
11
Што выхад print_r ($ лініі); да вашага цыкла?
дададзена аўтар Hanky Panky, крыніца
Зараз я з гэтым пытаннем. У мяне ёсць радок: спіс ($ LastName, $ FirstName, $ электроннай пошты, $ горада, $ bYear) = выбухаюць ( '|', $ лінія); і калі я print_r я атрымліваю чаканы вывад на экран, але я да гэтага часу ёсць Undefined зрушэнне Заўвага. Любыя ідэі?
дададзена аўтар WCA, крыніца
Зараз я з гэтым пытаннем. У мяне ёсць радок: спіс ($ LastName, $ FirstName, $ электроннай пошты, $ горада, $ bYear) = выбухаюць ( '|', $ лінія); і калі я print_r я атрымліваю чаканы вывад на экран, але я да гэтага часу ёсць Undefined зрушэнне Заўвага. Любыя ідэі?
дададзена аўтар WCA, крыніца

9 адказы

Вы атрымліваеце PHP апавяшчэння , таму што вы спрабуеце атрымаць доступ да індэксу масіва, які не ўсталяваны.

list($var,$value) = explode('=', $line);

Вышэй лініі узрывае радок $ радок з = і прызначыць 0th значэнне $ вар і 1 значэнне $ значэнне . Праблема ўзнікае тады, калі $ радок змяшчае радок без = .

15
дададзена
@tushAR: праверыць, ці мае значэньне = , перш чым зрабіць выбухаюць
дададзена аўтар Nauphal, крыніца
дзякуй за адказ. <�Код> print_r ($ радкоў) паказвае мне апошняе значэнне без = . Які спосаб пераадолець гэта?
дададзена аўтар tushAR, крыніца
<�Код> nauphal Дзякуй за адказ :)
дададзена аўтар tushAR, крыніца

Вы атрымліваеце PHP апавяшчэння , таму што вы спрабуеце атрымаць доступ да індэксу масіва, які не ўсталяваны.

list($var,$value) = explode('=', $line);

Вышэй лініі узрывае радок $ радок з = і прызначыць 0th значэнне $ вар і 1 значэнне $ значэнне . Праблема ўзнікае тады, калі $ радок змяшчае радок без = .

15
дададзена
@tushAR: праверыць, ці мае значэньне = , перш чым зрабіць выбухаюць
дададзена аўтар Nauphal, крыніца
дзякуй за адказ. <�Код> print_r ($ радкоў) паказвае мне апошняе значэнне без = . Які спосаб пераадолець гэта?
дададзена аўтар tushAR, крыніца
<�Код> nauphal Дзякуй за адказ :)
дададзена аўтар tushAR, крыніца

Вы атрымліваеце PHP апавяшчэння , таму што вы спрабуеце атрымаць доступ да індэксу масіва, які не ўсталяваны.

list($var,$value) = explode('=', $line);

Вышэй лініі узрывае радок $ радок з = і прызначыць 0th значэнне $ вар і 1 значэнне $ значэнне . Праблема ўзнікае тады, калі $ радок змяшчае радок без = .

15
дададзена
@tushAR: праверыць, ці мае значэньне = , перш чым зрабіць выбухаюць
дададзена аўтар Nauphal, крыніца
дзякуй за адказ. <�Код> print_r ($ радкоў) паказвае мне апошняе значэнне без = . Які спосаб пераадолець гэта?
дададзена аўтар tushAR, крыніца
<�Код> nauphal Дзякуй за адказ :)
дададзена аўтар tushAR, крыніца

Я ведаю, што гэта стары пытанне і адказ на яго пры ўмове дастаткова, «Вы атрымліваеце PHP апавяшчэнне, таму што вы спрабуеце атрымаць доступ да індэксу масіва, які не ўсталяваны.» але я лічу, што лепшым спосабам пераадолець гэтую праблему з нявызначанымі індэксамі, калі маюцца выпадкі, калі вы можаце мець пусты масіў, выкарыстоўваючы спіс ()/падарвацца() комба, каб усталяваць значэння па змаўчанні з дапамогай масіва клавіятуры.

Прычына ў тым, калі вы выкарыстоўваеце спіс (), вы ведаеце, колькасць зменных, якія вы хочаце з масіва.

Напрыклад:

$delim = '=';
$aArray = array()
$intNumberOfListItems = 2;


list($value1, $value2) = array_pad(explode($delim, $aArray, $intNumberOfListItems ), $intNumberOfListItems , null);

Па сутнасці, вы перадаеце трэці параметр выбухаюць пра тое, колькі значэнняў вам трэба для вашага спісу() зменныя (у прыведзеным вышэй прыкладзе два). Затым вы карыстаецеся array_pad даць значэнне па змаўчанні (у прыведзеным вышэй прыкладзе нулі), калі масіў не ўтрымлівае значэнне пераменнага спісу.

4
дададзена

<�Код> спіс моўная канструкцыя выкарыстоўваецца для стварэння асобных зменных з масіва. Калі масіў не мае дастаткова элементаў для ліку зменных, якія вы чакаеце ў спіс выклік, вы атрымаеце паведамленне пра памылку. У вашым выпадку ў вас ёсць 2 зменныя, так што вам трэба масіў з 2-х элементаў - індэксы 0 і 1.

http://php.net/manual/en/function.list.php

1
дададзена

Гэта звязана з масівам. Індэкс масіва ня паказваецца з-за ўказанне зрушэннем памылкі прыйдзе ...

Таму, калі ласка, праверце масіў print_r функцыі.

1
дададзена

робячы спіс ($ Var, $ значэння) PHP будзе чакаць масіў з 2 элементаў, калі функцыя выбухаць не знаходзіць роўны сімвал ён будзе вяртаць толькі масіў з 1 элемент выклікае нявызначаныя памылкі зрушэння, зрушэнне 1 з'яўляецца другім элемент масіва так, хутчэй за ўсё, адзін з вашых $ зменных лініі не маюць аднолькавы знак

1
дададзена

рашэнне:

$lines = array('one' => 'fruit=apple', 'two' => 'color=red', 'three' => 'language');

foreach ($lines as $line)
{
    list($var,$value) = (strstr($line, '=') ? explode('=', $line) : array($line, ''));
    $data[$var] = $value;
}

print_r($data);

Паспрабуйце гэта ..

For reference http://in1.php.net/manual/en/function.list.php http://in1.php.net/manual/en/function.explode.php

1
дададзена

Гэта выклікана тым, што ваш $ радок не ўтрымлівае « = » дзе-небудзь у радку, так што ўтрымлівае толькі адзін элемент у array.list() выкарыстоўваецца для прызначэння спісу зменных у адной аперацыі. Ваш спіс змяшчае 2 элемента, а таксама з дадзеных, якiя вяртаюцца Implode, ёсць толькі адзін дадзеныя. Таму ён кідае апавяшчэнне. Спосаб пераадолець гэта складаецца ў выкарыстанні array_pad() метад .

list($var,$value) = array_pad(explode('=', $line),2,null);
0
дададзена