Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.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数组_walk查找值的键_Php - Fatal编程技术网

php数组_walk查找值的键

php数组_walk查找值的键,php,Php,首先,让我开始说我对php是全新的,并开始学习它。我对实现结果的其他方法和任何批评持开放态度 我有一张有国家代码清单的表格。列表的格式是,国家代码是值,国家是文本 <option value="AF">Afghanistan</option> 我将国家代码作为键放入数组,将名称作为值放入数组 $countryArr = array('AF' => 'Afghanistan'); 我创建了一个变量来保存国家的名称 $country = ''; 我创建了一个函数来

首先,让我开始说我对php是全新的,并开始学习它。我对实现结果的其他方法和任何批评持开放态度

我有一张有国家代码清单的表格。列表的格式是,国家代码是值,国家是文本

<option value="AF">Afghanistan</option>
我将国家代码作为键放入数组,将名称作为值放入数组

$countryArr = array('AF' => 'Afghanistan');
我创建了一个变量来保存国家的名称

$country = '';
我创建了一个函数来查找值并将密钥写入$country

function countryName($value, $key) {
    if ($countryCode == $value) {
        $country = $key;
    } else {
        $country = 'not found';
    }
}    
我使用上面的函数遍历数组

array_walk($countryArr, 'countryName');
我期望的输出是国家名称或“未找到”,但我得到的是一个空字符串

我现在在操场上工作,但不是生活,大概是因为
htmlspecialchars
——但我不知道如何处理这个问题。我使用
htmlspecialchars
作为一种逃逸字符串的方法,绕过常见的XSS攻击

在操场上工作

<?php
  $countryCode = 'AF';
  $countryArr = array('AF' => 'Afghanistan');
  $country = '';
  function countryName($value, $key) {
    global $countryCode, $country;
    if ($countryCode == $key) {
      $country = $value;
    } else {
      $country = 'not found';
    }
  }
  array_walk($countryArr, 'countryName');
  echo('Country:<br>');
  echo("&nbsp;&nbsp;&nbsp;&nbsp;$country");
?>

如果需要从value返回key,则不需要为此创建函数或使用array\u walk。 相反,此数组搜索也将起作用

$key = array_search ('country_name', $countryArr);

若需要从value返回key,则不需要为此创建函数或使用array\u walk。 相反,此数组搜索也将起作用

$key = array_search ('country_name', $countryArr);

根据注释,您只需查找给定键的数组值:

$countryCode = 'AF';
$countryArr = array('AF' => 'Afghanistan');

$countryName = $countryArr[$countryCode] ?? null;
??null
part(需要PHP7)确保
$countryName
将为null,即使国家代码在数组中不作为键存在


请注意,我建议您使用非常基本的PHP。

根据评论,您只需查找给定键的数组值:

$countryCode = 'AF';
$countryArr = array('AF' => 'Afghanistan');

$countryName = $countryArr[$countryCode] ?? null;
??null
part(需要PHP7)确保
$countryName
将为null,即使国家代码在数组中不作为键存在

请注意,我建议您使用非常基本的PHP。





您的
countryName
函数无权访问
$countryCode
变量。此外,在同一函数中为
$country
赋值也没有任何作用。你能尽可能简单地重新表述你想做的事情吗?您想传递一个国家名称并检索相应的密钥吗?我想我不理解php中的作用域。。。我希望$countryCode是一个全局变量,因为它是在任何函数之外的文件范围中定义的。我想php的作用域是不同的,我需要做更多的研究。我要说的是“AF”,但我想要的是“Afghanistan”,是的,大多数语言都是这样。在PHP中,您必须通过
$GLOBALS['countryCode']
访问它,或者在函数开头使用
global$countryCode将其声明为全局。谢谢,它是这样工作的,但我总是得到“找不到”我在函数中反转了键/值。现在,它在一个带有硬编码值的游乐场中工作,但不是活动的-可能是因为
htmlspecialchars
,但我不确定如何处理
countryName
函数无法访问
$countryCode
变量。此外,在同一函数中为
$country
赋值也没有任何作用。你能尽可能简单地重新表述你想做的事情吗?您想传递一个国家名称并检索相应的密钥吗?我想我不理解php中的作用域。。。我希望$countryCode是一个全局变量,因为它是在任何函数之外的文件范围中定义的。我想php的作用域是不同的,我需要做更多的研究。我要说的是“AF”,但我想要的是“Afghanistan”,是的,大多数语言都是这样。在PHP中,您必须通过
$GLOBALS['countryCode']
访问它,或者在函数开头使用
global$countryCode将其声明为全局。谢谢,它是这样工作的,但我总是得到“找不到”我在函数中反转了键/值。现在它在一个带有硬编码值的操场上工作,但不是活动的-可能是因为
htmlspecialchars
但我不知道如何处理,为什么要给它传递一个键?您要从键中获取值,还是从值中获取键?如果是前者,那么它只是一个简单的数组访问:
$countryArr[$countryCode]
..@Jeto在操场和现场工作。如果你想给我一个答案,我想给你一个信任up@froggomad我刚做了。你为什么要把钥匙给它?您要从键中获取值,还是从值中获取键?如果是前者,那么它只是一个简单的数组访问:
$countryArr[$countryCode]
..@Jeto在操场和现场工作。如果你想给我一个答案,我想给你一个信任up@froggomad就这么做了。正如我所说的,我现在只是随机应变。我成功地编写了一个脚本,在不了解数组的情况下将表单处理成SQL db。生命不必按顺序从A点到Z点。我会按我的方式到达那里。非常感谢你的帮助正如我所说的,我现在只是随机应变。我成功地编写了一个脚本,在不了解数组的情况下将表单处理成SQL db。生命不必按顺序从A点到Z点。我会按我的方式到达那里。非常感谢你的帮助