Я не уверен, что моя память ошибочна, но когда я в последний раз пользовался PHP (много лет назад), я смутно помню, что делал что-то вроде этого:
$firstVariable, $secondVariable = explode(' ', 'Foo Bar');
Обратите внимание, что приведенное выше является неправильным синтаксисом, однако в этом примере он присваивает 'Foo' $ firstVariable, а 'Bar' – $ secondVariable.
Каков правильный синтаксис для этого?
Благодарю.
list($firstVar, $secondVar) = explode(' ', 'Foo Bar');
list () – это то, что вам нужно.
Сначала несколько примеров со списком (), а затем 2 примера со списком () в сочетании с explode ().
Примеры на странице руководства PHP для списка () особенно освещаются:
В принципе, ваш список может быть до тех пор, пока вы хотите, но это абсолютный список. Другими словами, порядок элементов в массиве, очевидно, имеет значение, и чтобы пропустить что-то, вы должны оставить соответствующие пятна пустыми в своем списке ().
Наконец, вы не можете перечислить строку.
<?php $info = array('coffee', 'brown', 'caffeine'); // Listing all the variables list($drink, $color, $power) = $info; echo "$drink is $color and $power makes it special.\n"; // Listing some of them list($drink, , $power) = $info; echo "$drink has $power.\n"; // Or let's skip to only the third one list( , , $power) = $info; echo "I need $power!\n"; // list() doesn't work with strings list($bar) = "abcde"; var_dump($bar); // NULL ?>
Несколько примеров, например:
Применение list()
, explode()
и Arrays
к дисфункциональным отношениям:
<?php // What they say. list($firstVar, $secondVar, , , $thirdVar) = explode(' ', 'I love to hate you'); // What you hear. // Disaplays: I love you echo "$firstVar $secondVar $thirdVar"; ?>
Наконец, вы можете использовать list () в сочетании с массивами. $VARIABLE[]
сохраняет элемент в последнем слоте в массиве. Хранить вещи заказа следует, так как это, вероятно, обратное тому, что вы ожидаете:
<?php list(, $Var[], ,$Var[] , $Var[]) = explode(' ', 'I love to hate you'); // Displays: // Array ( [0] => you [1] => hate [2] => love ) print_r($Var); ?>
Объяснение того, почему вещи заказа хранятся в том виде, в каком оно указано, указано в предупреждении на странице списка ():
list() assigns the values starting with the right-most parameter. If you are using plain variables, you don't have to worry about this. But if you are using arrays with indices you usually expect the order of the indices in the array the same you wrote in the list() from left to right; which it isn't. It's assigned in the reverse order.