Php 多维数组未返回正确的值

Php 多维数组未返回正确的值,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有一个多维数组,我正在尝试使用它,下面是它的样子 $states = array( "California" => array( "state" => "California", "abbr" => "CA", "city" => "Sacramento", "county" => "Sacramento", "zip" => "95632" ), "Washington" => array( "stat

我有一个多维数组,我正在尝试使用它,下面是它的样子

$states = array(
"California" => array(
    "state" => "California",
    "abbr" => "CA",
    "city" => "Sacramento",
    "county" => "Sacramento",
    "zip" => "95632"
),
"Washington" => array(
    "state" => "Washington",
    "abbr" => "WA",
    "city" => "Seattle",
    "county" => "King",
    "zip" => "98101"
),
"Texas" => array(
    "state" => "Texas",
    "abbr" => "TX",
    "city" => "San Antonio",
    "county" => "Bexar",
    "zip" => "78251"
),
"Florida" => array(
    "state" => "Florida",
    "abbr" => "FL",
    "city" => "Orlando",
    "county" => "Orange",
    "zip" => "32801"
),
);
当我运行foreach循环从数组的第一级获取键时,我得到了

California Washington Texas Florida
但是,我需要访问阵列的第二级。例如,我需要California['abbr'],所以这是我运行的代码:

foreach (array_keys($states) as $state) {
    echo $state['abbr'];
}
而不是

CA WA TX FL 
就像我所期望的那样

C W T F

你知道我做错了什么吗?

你可以使用两个foreach来访问每个城市(数组)内的元素。这不是最快的方法,但知道这一点很好

// access the first layer
foreach($states as $state)
{
  // access the second layer
  foreach($state as $key => $element)
  {
    // if the key is equal to 'abbr', echo it's value
    echo ($key == 'abbr') ? $state[$key] : '';
    echo '  ';
  }
}
这将输出:

卡瓦德克萨斯佛罗里达州


可以使用两个foreach来访问每个城市(数组)内的元素。这不是最快的方法,但知道这一点很好

// access the first layer
foreach($states as $state)
{
  // access the second layer
  foreach($state as $key => $element)
  {
    // if the key is equal to 'abbr', echo it's value
    echo ($key == 'abbr') ? $state[$key] : '';
    echo '  ';
  }
}
这将输出:

卡瓦德克萨斯佛罗里达州

只是:

只是:

将回显键,因为您是在键上循环,而不是在数组上循环。要获得缩写,您应该

foreach($states as $state) {
    echo $state['abbr'];
}
如果要同时循环键和值,请尝试以下操作

foreach($states as $key=>$state) {
    echo "$key: {$state['abbr']}";
}
将回显键,因为您是在键上循环,而不是在数组上循环。要获得缩写,您应该

foreach($states as $state) {
    echo $state['abbr'];
}
如果要同时循环键和值,请尝试以下操作

foreach($states as $key=>$state) {
    echo "$key: {$state['abbr']}";
}
array\u key($states)
正在返回

 array("California", "Washington", "Texas", "Florida")
因此,
foreach
循环只回显每个状态的第一个字符。循环遍历整个数组,而不仅仅是关键帧:

foreach ($states as $name => $details) {
    echo $details['abbr'];
}
array\u key($states)
正在返回

 array("California", "Washington", "Texas", "Florida")
因此,
foreach
循环只回显每个状态的第一个字符。循环遍历整个数组,而不仅仅是关键帧:

foreach ($states as $name => $details) {
    echo $details['abbr'];
}

仅剪切
阵列\u键
。您需要该数组的整个元素,而不仅仅是数组的键

foreach ($states as $state)
{
    echo $state['abbr'];
}

仅剪切
阵列\u键
。您需要该数组的整个元素,而不仅仅是数组的键

foreach ($states as $state)
{
    echo $state['abbr'];
}

虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满您的代码,因为这会降低代码和解释的可读性!虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满您的代码,因为这会降低代码和解释的可读性!