查明字符串是否与数组键匹配,该键的 return 值
Find out if string matches array key, return value for that key
我正在处理一个导入脚本,该脚本需要评估设置的字符串是否符合后端字段可能具有的值。
更确切地说,我所拥有的是这个提交数组:
$committees = array(
'Ämter' => 1,
'Abteilungen' => 2,
'Konservatoren' => 3,
'Dienstagssitzung' => 4,
);
现在我需要弄清楚是否有一个字符串保存在
变量 $category
匹配该数组中的任何键。如果它确实匹配其中一个条目,我需要它 return 与该键一起出现的值(1、2、3 或 4)。
我在 Whosebug 上阅读了相关内容,并找到了很多示例来查看数组中的值是否等于 1,例如:
preg_match array items in string?
并试图跟随他们。
我试过了
$committeesKeys = '/(' . implode('|', array_keys($committees)) . ')/';
$matches = preg_match($committeesKeys, $category);
但这只 return找到了多少匹配项?
我也试过了
$input = preg_quote($category, '/');
$matches = preg_filter('/'.$input.'/', null, $committees);
正如其他人建议的那样,找不到 link,但是 return 编辑了一个空数组。
我对所有这些都是新手,所以这里可能完全错了。
谁能告诉我该怎么做,或者在哪里可以找到问题的答案?我可能只是没有找到它,我现在的大脑很累...
你可以这样做:
function getValue($category){
if (array_key_exists($category, $committees)){
return $committees[$category]; //the value you want
}
}
希望这对您有所帮助:)
preg_match() 有第三个参数,它允许您将捕获组保存到数值数组中。然而,如果你想直接比较一个字符串,你可以简单地使用一个循环和 strcmp 或 === 这可能会工作得更快,因为 preg_match 必须编译你在第一个参数中定义的正则表达式。我对这个问题的解决方案如下:
$found = FALSE;
foreach ( $committees as $name=>$number ) {
if ( $name === $category ) {
$found = $number;
}
}
return $found;
你不显示类别匹配中的内容,这让事情变得很困难。
也许是这样的。
$results = array_intersect ($matches,$committees );
我觉得我有权 post 作为答案被接受:-) :
echo (isset($committees[$category]))?$committees[$category]:'There is no '.$category.' category';
我正在处理一个导入脚本,该脚本需要评估设置的字符串是否符合后端字段可能具有的值。 更确切地说,我所拥有的是这个提交数组:
$committees = array(
'Ämter' => 1,
'Abteilungen' => 2,
'Konservatoren' => 3,
'Dienstagssitzung' => 4,
);
现在我需要弄清楚是否有一个字符串保存在
变量 $category
匹配该数组中的任何键。如果它确实匹配其中一个条目,我需要它 return 与该键一起出现的值(1、2、3 或 4)。
我在 Whosebug 上阅读了相关内容,并找到了很多示例来查看数组中的值是否等于 1,例如: preg_match array items in string? 并试图跟随他们。 我试过了
$committeesKeys = '/(' . implode('|', array_keys($committees)) . ')/';
$matches = preg_match($committeesKeys, $category);
但这只 return找到了多少匹配项?
我也试过了
$input = preg_quote($category, '/');
$matches = preg_filter('/'.$input.'/', null, $committees);
正如其他人建议的那样,找不到 link,但是 return 编辑了一个空数组。
我对所有这些都是新手,所以这里可能完全错了。
谁能告诉我该怎么做,或者在哪里可以找到问题的答案?我可能只是没有找到它,我现在的大脑很累...
你可以这样做:
function getValue($category){
if (array_key_exists($category, $committees)){
return $committees[$category]; //the value you want
}
}
希望这对您有所帮助:)
preg_match() 有第三个参数,它允许您将捕获组保存到数值数组中。然而,如果你想直接比较一个字符串,你可以简单地使用一个循环和 strcmp 或 === 这可能会工作得更快,因为 preg_match 必须编译你在第一个参数中定义的正则表达式。我对这个问题的解决方案如下:
$found = FALSE;
foreach ( $committees as $name=>$number ) {
if ( $name === $category ) {
$found = $number;
}
}
return $found;
你不显示类别匹配中的内容,这让事情变得很困难。
也许是这样的。
$results = array_intersect ($matches,$committees );
我觉得我有权 post 作为答案被接受:-) :
echo (isset($committees[$category]))?$committees[$category]:'There is no '.$category.' category';