0

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

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

4 回答 4

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)

但是再考虑以所需的方式构建原始数组,并且只有在您负担不起时才这样做。

于 2011-09-26T20:53:12.297 回答
1

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

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

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

于 2011-09-26T20:53:29.153 回答
1

它不起作用,因为您正在寻找数组键,而 4、6、9 和 7 是值,但是如果您使用array_search($gid, $result['canv']),您会发现$gidor falseif$gid的值不在列表中。

所以这将起作用:

if(array_search($gid, $result['canv']) !== false){
    //Do Stuff
}
于 2011-09-26T20:56:47.740 回答
0

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

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

您没有指定所需的值,但这可能无关紧要。你可以随心所欲地达到那个目的,但如果你最终得到一个包含(4,6,9,7)在其中的数组,你可以这样做array_flip,它会用值交换键。

于 2011-09-26T20:57:27.870 回答