PHP: использование оператора => без массива - PullRequest
2 голосов
/ 30 ноября 2009

Есть ли способ использовать оператор PHP => (?) Без использования array() "конструктора"?

Если быть точным, я хочу создать функцию, которая получит список ключей и значений, не заключая его в массив:

function keysAndValues($items) {
    /* ... */
}

keysAndValues(
    'key1' => 'value1',
    'key2' => 'value2',
    'key3' => 'value3'
);

Вместо

keysAndValues(array(
    'key1' => 'value1',
    'key2' => 'value2',
    'key3' => 'value3'
));

Есть ли способ сделать это?

Ответы [ 3 ]

4 голосов
/ 30 ноября 2009

Это были бы именованные аргументы. Нет, не возможно в PHP. Вам придется обернуть вокруг них массив ().

Если вас беспокоит не массив, а тот факт, что вам нужно работать с массивом внутри функции, попробуйте

function my_function($array)
{
extract($array);
...
if (isset($number)) echo "Number is: ".$number;
}

чтобы распаковать опции в область действия функции:

my_function(array("number" => "one")); // Will output "Number is: one"

избавляет от необходимости распаковывать их один за другим, используя foreach().

1 голос
/ 30 ноября 2009

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

Используя этот учебник / обзор в качестве основы, здесь есть способ найти потенциальное решение:

function keysAndValues() {
   for($i = 0 ; $i < func_num_args(); $i++) {
       list($key, $value) = explode('=>', func_get_arg($i));
       // Do something with the $key and $value
   }
}

Тогда это будет называться так:

keysAndValues('key1=>value1','key2=>value2','key3=>value3');
keysAndValues('key1=>value1');

В принципе, вы можете иметь любое количество параметров ... они динамические!

0 голосов
/ 30 ноября 2009

хорошо, в частности, оператор '=>' обозначает пару ключ-значение внутри массива, так что на самом деле нет никакой причины использовать его вне конструктора массива.

при этом он используется внутри таких вещей, как цикл 'foreach', чтобы получить ключ и значение для каждого элемента в массиве

foreach ($arr as $key=>$val)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...