Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数组\u密钥\u存在$argv不能正常工作?_Php_Unix - Fatal编程技术网

Php 数组\u密钥\u存在$argv不能正常工作?

Php 数组\u密钥\u存在$argv不能正常工作?,php,unix,Php,Unix,我正在编写一个php代码,它打算从Unix控制台运行,带有几个可选的开关。我无法让脚本识别开关 我以这种方式从控制台运行脚本 ./<scriptname>.php v 但尽管行var_dump$argv;输出: array(2) { [0]=> string(21) "./<scriptname>.php" [1]=> string(1) "v" } 以下行echo\n字母:$verbose:\n;输出verbose:::这是false 为

我正在编写一个php代码,它打算从Unix控制台运行,带有几个可选的开关。我无法让脚本识别开关

我以这种方式从控制台运行脚本

./<scriptname>.php v
但尽管行var_dump$argv;输出:

array(2) {
  [0]=>
  string(21) "./<scriptname>.php"
  [1]=>
  string(1) "v"
}
以下行echo\n字母:$verbose:\n;输出verbose:::这是false

为什么?? 非常感谢

v是$argv中的值,而不是键。您可以通过以下方式进行检查:

注意:in_数组对数组内容执行线性搜索,如果满足以下一个或多个条件,这可能不是最好的方法:

您正在循环中调用它 数组很长 您期望大量的检查返回false 在这种情况下,这些都不是真的,所以你在这里很好。但是如果情况不同,您可以考虑使用数组的值作为另一个数组的密钥,这样就可以用O1的摊销成本来检查,而不是on:

。 v是$argv内的值,不是键。您可以通过以下方式进行检查:

注意:in_数组对数组内容执行线性搜索,如果满足以下一个或多个条件,这可能不是最好的方法:

您正在循环中调用它 数组很长 您期望大量的检查返回false 在这种情况下,这些都不是真的,所以你在这里很好。但是如果情况不同,您可以考虑使用数组的值作为另一个数组的密钥,这样就可以用O1的摊销成本来检查,而不是on:


除此之外,我不明白为什么人们会使用array_key_exists-isset$array[$key]是相同的,而且速度更快。他说,微优化感谢您的提示@DaveRandom@DaveRandom:IMO array_key_exists,如果key存在,isset不同,但相关值为空。你可能会关心我过去有理由关心的差异。除此之外,我不明白为什么人们会使用array_key_存在-isset$array[$key]是相同的,而且速度更快他说,微优化感谢您提供的提示@DaveRandom@DaveRandom:IMO array_key_存在,如果key存在但关联的值为null,则设置不同。你可能会关心我过去有理由关心的差异。
array(2) {
  [0]=>
  string(21) "./<scriptname>.php"
  [1]=>
  string(1) "v"
}
$verbose = in_array("v", $argv);
// 100% safe as long as you don't mind "losing" duplicate values:
$lookup = array_fill_keys(array_keys($argv), true);

// Should be equivalent, at first sight looks safe, might be faster
// In THIS case it works just fine, but in this case you wouldn't want to
// flip the array in the first place
$lookup = array_flip($argv);

$verbose = isset($lookup["v"]);