PHP的array_flip导致未定义的偏移量

时间:2013-10-03 16:09:11

标签: php arrays

这是我原来的数组:

Array ( [0] => pid [1] => pname [2] => paddress [3] => pphone)

使用array_flip后,它就变成了这个,这就是我想要的:

Array ( [pid] => 0 [pname] => 1 [paddress] => 2 [pphone] => 3)

然而,我似乎无法使用该阵列。当我尝试遍历每个项目时,我得到未定义的偏移量。

3 个答案:

答案 0 :(得分:1)

如果你在翻转数组之前使用for循环它将不再起作用,因为数组变成了一个关联数组。您可以使用foreach($array as $k => $v )循环,它应该可以正常工作。

for循环仅适用于以数字方式编制索引的数组。

for($i=0;$i<count($array);$i++)
{
  echo $array[$i];
}

foreach用于关联数组。

foreach($array as $k => $v)
{
  echo $k.'=>'.$v;
}

编辑:您也可以使用带有数字索引数组的foreach数组。

答案 1 :(得分:0)

使用foreach循环数组

 foreach($array as $key => $value){
    echo "key=$key"."</br>";
    echo "value=$value";
    }

答案 2 :(得分:0)

当然,如果您尝试通过字符串键访问它,那么它将抛出错误'undefined offset x'。

您需要确保如果您通过循环运行它,那么您需要指定键和值:

foreach($array as $key => $value){
    // do stuff
}

或者如果您愿意,可以在不进行循环的情况下获取值/键,这可能是更有效的方法:

$keys = array_keys($array);
$values = array_values($array);

$x = array_flip($array);
$flipped_keys = array_keys($x);
$flipped_values = array_values($x);
echo $x[$flipped_keys[0]];

希望这会有所帮助