PHP Присваивают массив переменным

Я не уверен, является ли моя память неправильной, но когда я в последний раз использовал PHP (несколько лет назад), я неопределенно не забываю делать что-то вроде этого:

$firstVariable, $secondVariable = explode(' ', 'Foo Bar');

Обратите внимание, что вышеупомянутое является неправильным синтаксисом, однако в этом примере, это присвоило бы 'Foo' $firstVariable и 'Панель' к $secondVariable.

Каков правильный синтаксис для этого?

Спасибо.

28
задан Peter Ajtai 27 July 2010 в 06:16
поделиться

2 ответа

list($firstVar, $secondVar) = explode(' ', 'Foo Bar');

list () - это то, что вам нужно.

54
ответ дан 28 November 2019 в 02:37
поделиться

Сначала несколько примеров только с list (), затем 2 примера с list () в сочетании с explode ().


Примеры на странице руководства PHP для list () особенно показательны:

В принципе, ваш список может быть сколь угодно длинным, но это абсолютный список. Другими словами, порядок элементов в массиве, очевидно, имеет значение, и чтобы пропустить что-то, вы должны оставить соответствующие места пустыми в вашем списке ().

Наконец, вы не можете перечислить строку.

<?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 ():

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.
15
ответ дан 28 November 2019 в 02:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: