Php阵列重建

时间:2011-09-26 20:47:44

标签: php arrays rebuild

我有一个看起来像这样的数组:

array("canv" => array(1 => "4", 2 => "6", 3 => "9", 4 => "7");

我需要它看起来像这样:

array("canv" => array("4", "6", "9", "7");

所以我可以很容易地检查这个值是否存在:

if(isset($result["canv"][$gid]))其中$ gid是“4”,“6”,“9”,“7”中的数字。

怎么做?

4 个答案:

答案 0 :(得分:3)

这会将值翻转为键,反之亦然:

$result["canv"] = array_flip($result["canv"]);

所以而不是

array(1 => "4", 2 => "6", 3 => "9", 4 => "7")

你会有

array("4" => 1, "6" => 2, "9" => 3, "7" => 4)

然后再考虑以所需的方式构建原始数组,只有在你负担不起时才这样做。

答案 1 :(得分:1)

如果没有任何修改,使用现有数组,您可以将其检查为:

if (in_array($gid, $result["canv"])) {
  // $gid is in the array
}

逻辑上,如果canv是这些值的数组,则值应该是数组成员而不是指向成员的数组键。您要求将它们用作数组键。除非您希望它们稍后表现为键,否则它们将用于指向数组值,您现在不应该更改它们。

答案 2 :(得分:1)

它不起作用,因为您正在寻找数组键,而4,6,9和7是值,但如果您使用array_search($gid, $result['canv']),您将找到$gid的索引或如果false的值不在列表中,则为$gid

所以这会奏效:

if(array_search($gid, $result['canv']) !== false){
    //Do Stuff
}

答案 3 :(得分:0)

然后我认为你不希望它看起来像......你希望它看起来像这样:

array( 
    "canv" => array( 
        4 => "value", 
        6 => "value", 
        9 => "value", 
        7 => "value" 
    )
)

您未指定所需的值,但可能无关紧要。您可以按照自己的意愿到达,但如果您最终使用包含(4,6,9,7)的数组,则只需执行array_flip即可将密钥与值进行交换。