Php 如何避免检查是否设置了变量?(菲律宾)
我想在if语句中使用一个变量,但我不知道它是否已设置 我现在这样做Php 如何避免检查是否设置了变量?(菲律宾),php,variables,Php,Variables,我想在if语句中使用一个变量,但我不知道它是否已设置 我现在这样做 if (isset ($array['var']) && ($array['var']==5) ) .... 必须有一种更优雅的方式来做到这一点。最佳做法是什么?您可以使用例如: if (isset ($array['var'])) { if ($array['var']==5) { // Do something here } } 例如,您可以使用: if (isset ($arra
if (isset ($array['var']) && ($array['var']==5) ) ....
必须有一种更优雅的方式来做到这一点。最佳做法是什么?您可以使用例如:
if (isset ($array['var'])) {
if ($array['var']==5) {
// Do something here
}
}
例如,您可以使用:
if (isset ($array['var'])) {
if ($array['var']==5) {
// Do something here
}
}
这确实是PHP想要添加一些语法糖分的领域之一。 目前,编写这篇文章的唯一方法是使用一个自定义函数:
function array_val($array, $key) {
return array_key_exists($key, $array) ? $array[$key]: false;
}
if (array_val($array, 'var') == 5) {
// do your stuff
}
您甚至可以在此基础上进行扩展,使第二个参数也接受路径:
function array_val($array, $path) {
if (is_array($path)) {
$current = $array;
foreach ($path as $p) {
if (!is_array($current)) return false;
if (array_key_exists($p, $current)) $current = $current[$p];
else return false;
}
return $current;
}
return array_val($array, array($path));
}
$myArr = array(
'key1' => array(
'key2' => array(
'key3' => 'myValue'
)
)
);
echo array_val($myArr, array('key1', 'key2', 'key3')); // will echo 'myValue'
这确实是PHP想要添加一些语法糖分的领域之一。 目前,编写这篇文章的唯一方法是使用一个自定义函数:
function array_val($array, $key) {
return array_key_exists($key, $array) ? $array[$key]: false;
}
if (array_val($array, 'var') == 5) {
// do your stuff
}
您甚至可以在此基础上进行扩展,使第二个参数也接受路径:
function array_val($array, $path) {
if (is_array($path)) {
$current = $array;
foreach ($path as $p) {
if (!is_array($current)) return false;
if (array_key_exists($p, $current)) $current = $current[$p];
else return false;
}
return $current;
}
return array_val($array, array($path));
}
$myArr = array(
'key1' => array(
'key2' => array(
'key3' => 'myValue'
)
)
);
echo array_val($myArr, array('key1', 'key2', 'key3')); // will echo 'myValue'
我创建了一个函数,如果未设置键,该函数将返回默认值:
//Have to take the array by reference, or you will get a notice about undefined variables.
//Just be sure you don't modify $array in this function.
function arrayValueWithDefault(&$array, $key, $default) {
if (!is_array($array) || !array_key_exists($key, $array))
return $default;
return $array[$key];
}
它非常适合从$\u GET
和$\u POST
读取数据,但您可以在任何阵列上使用它:
$id = arrayValueWithDefault($_GET, 'id', 0);
$name = arrayValueWithDefault($_POST, 'name', "");
$array = array(
'count' => 3,
'items' => array(0, 1, 2)
);
//Yes, I realize that you could just use sizeof() on $items here.
$count = arrayValueWithDefault($array, 'count', 0);
$items = arrayValueWithDefault($array, 'items', array());
for ($i = 0; $i < $count; $i++) {
$item = $items[$i];
echo $item;
}
我创建了一个函数,如果未设置键,该函数将返回默认值:
//Have to take the array by reference, or you will get a notice about undefined variables.
//Just be sure you don't modify $array in this function.
function arrayValueWithDefault(&$array, $key, $default) {
if (!is_array($array) || !array_key_exists($key, $array))
return $default;
return $array[$key];
}
它非常适合从$\u GET
和$\u POST
读取数据,但您可以在任何阵列上使用它:
$id = arrayValueWithDefault($_GET, 'id', 0);
$name = arrayValueWithDefault($_POST, 'name', "");
$array = array(
'count' => 3,
'items' => array(0, 1, 2)
);
//Yes, I realize that you could just use sizeof() on $items here.
$count = arrayValueWithDefault($array, 'count', 0);
$items = arrayValueWithDefault($array, 'items', array());
for ($i = 0; $i < $count; $i++) {
$item = $items[$i];
echo $item;
}
这不是完全一样吗?除非在
if(isset
bit)中有更多的检查,否则方法是一样的,但最好是读取。我认为..但是您最终会得到一个不必要的if
语句。如果您想让它更好地读取,为什么不把$array['var']==5
在同一if
语句中的换行符上。@q0re-当然效率更低,因为有一个额外的if
语句。正如David Gard所说,效率稍低。有两个分支而不是一个。这不是完全一样吗?除非if语句中有更多的检查(isset
bit方法是一样的,但最好是读取。我认为..但您最终会得到一个不必要的if
语句。如果您希望它更好地读取,为什么不将$array['var']==5
在同一if
语句中的换行符上。@q0re-当然效率更低,因为有一个额外的if
语句。正如David Gard所说,效率稍低。有两个分支而不是一个。我建议使用array\u key\u exists('var',$array)
而不是isset()
在处理数组时。感谢您的回答。到目前为止,这三个答案不是我想要的。解决方案的代码应该比我的少。如果PHP没有一些语法方法使其更优雅,这就是我想要的答案。您是否有定义自己函数的问题?通常,您会将这些普通include文件中的函数包含在每个PHP脚本的顶部。然后,代码量就会减少。我建议使用array\u key\u exists('var',$array)
而不是isset()
在处理数组时。感谢您的回答。到目前为止,这三个答案不是我想要的。解决方案的代码应该比我的少。如果PHP没有一些语法方法使其更优雅,这就是我想要的答案。您是否有定义自己函数的问题?通常,您会将这些在每个PHP脚本顶部包含的通用包含文件中的函数。然后,代码量确实会减少。这绝对不是一个坏方法!感谢NDM。我将答案标记为正确,因为我告诉我在PHP中没有更好的方法来处理它。这绝对不是一个坏方法!感谢NDM。我将答案标记为correct告诉我在PHP中没有更好的方法来处理它。