PHP:using =>没有数组的运算符

时间:2009-11-30 02:56:15

标签: php

有没有办法在不使用=>“构造函数”的情况下使用PHP array()运算符(?)?

具体来说,我想创建一个函数来获取键和值的列表,而不将其包装到数组中:

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

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

而不是

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

有办法做到这一点吗?

3 个答案:

答案 0 :(得分:4)

这些将被命名为参数。不,在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 :(得分:1)

你最接近你想要的是使用动态参数。

使用this tutorial/overview作为基础,这是一个提供潜在解决方案的黑客攻击:

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');

基本上,你可以拥有任何数量的参数......它们是动态的!

答案 2 :(得分:0)

嗯,具体来说,'=&gt;' operator表示数组中的键值对,因此在数组构造函数之外使用它确实没有理由

说,它在像'foreach'循环这样的东西中用来获取数组中每个项目的键和值

foreach ($arr as $key=>$val)