有没有办法在不使用=>
“构造函数”的情况下使用PHP array()
运算符(?)?
具体来说,我想创建一个函数来获取键和值的列表,而不将其包装到数组中:
function keysAndValues($items) {
/* ... */
}
keysAndValues(
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3'
);
而不是
keysAndValues(array(
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3'
));
有办法做到这一点吗?
答案 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)