php怎么找数组里指定值的键

不及物动词 其他 317

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在 PHP 中找到数组中指定值的键可以通过多种方法实现,以下是三种常见的方法:

    方法一:使用 array_search() 函数
    array_search() 函数可以在数组中查找指定值,并返回其对应的键。示例如下:

    “`php
    $myArray = array(‘apple’, ‘banana’, ‘carrot’, ‘banana’);

    $key = array_search(‘banana’, $myArray);

    echo “The key of ‘banana’ is: ” . $key; // 输出:The key of ‘banana’ is: 1
    “`

    方法二:使用 array_keys() 函数
    array_keys() 函数可以返回数组中所有指定值的键。示例如下:

    “`php
    $myArray = array(‘apple’, ‘banana’, ‘carrot’, ‘banana’);

    $keys = array_keys($myArray, ‘banana’);

    echo “The keys of ‘banana’ are: “;
    foreach ($keys as $key) {
    echo $key . “, “; // 输出:The keys of ‘banana’ are: 1, 3,
    }
    “`

    方法三:使用 foreach 循环
    通过 foreach 循环遍历数组,找到指定值的键。示例如下:

    “`php
    $myArray = array(‘apple’, ‘banana’, ‘carrot’, ‘banana’);

    $searchValue = ‘banana’;
    $key = null;

    foreach ($myArray as $k => $v) {
    if ($v === $searchValue) {
    $key = $k;
    break;
    }
    }

    echo “The key of ‘banana’ is: ” . $key; // 输出:The key of ‘banana’ is: 1
    “`

    以上三种方法都可以用于在 PHP 中找到数组中指定值的键,具体选择哪一种方法取决于实际需求和个人偏好。

    2年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    在PHP中,要找到数组中指定值的键,可以使用array_search()函数或者自己编写一个循环来解决。

    1. 使用array_search()函数:
    array_search()函数可以通过值在数组中的索引来查找并返回相应的键。函数的使用方法如下:

    “`
    $needle = ‘指定值’;
    $array = array(‘键1’ => ‘值1’, ‘键2’ => ‘值2’, ‘键3’ => ‘值3’);

    $key = array_search($needle, $array);

    if($key !== false) {
    echo ‘指定值的键是:’ . $key;
    } else {
    echo ‘找不到指定值的键’;
    }
    “`

    这里的$needle是要找的指定值,$array是要搜索的数组。array_search()函数会返回指定值在数组中的键,如果找不到指定值,将返回false。

    2. 使用循环来查找指定值的键:
    如果不想使用array_search()函数,也可以通过自己编写一个循环来实现。具体步骤如下:

    “`
    $needle = ‘指定值’;
    $array = array(‘键1’ => ‘值1’, ‘键2’ => ‘值2’, ‘键3’ => ‘值3’);

    foreach($array as $key => $value) {
    if($value == $needle) {
    echo ‘指定值的键是:’ . $key;
    break;
    }
    }

    if(!isset($key)) {
    echo ‘找不到指定值的键’;
    }
    “`

    这里使用foreach循环遍历数组,将数组中的值和指定值进行比较,如果找到相等的值,就输出相应的键,并使用break语句跳出循环。如果循环结束后仍未找到指定值的键,就输出找不到的提示。

    3. 多个匹配值的情况处理:
    上面的方法只能找到第一个匹配到的键,如果数组中有多个匹配值,可以使用array_keys()函数将所有匹配值的键返回成一个新的数组。

    “`
    $needle = ‘指定值’;
    $array = array(‘键1’ => ‘值1’, ‘键2’ => ‘值2’, ‘键3’ => ‘值3’, ‘键4’ => ‘值2’);

    $keys = array_keys($array, $needle);

    if(!empty($keys)) {
    echo ‘指定值的键是:’ . implode(“, “, $keys);
    } else {
    echo ‘找不到指定值的键’;
    }
    “`

    在这个例子中,array_keys()函数会在数组中找到所有匹配值的键,并返回一个新的数组。如果这个新数组不为空,就将所有键使用implode()函数连接起来输出,如果为空则输出找不到的提示。

    4. 不区分大小写查找:
    如果想要进行大小写不敏感的查找,可以先使用array_map()函数将数组中的所有值都转换为小写(或大写),然后再进行查找。

    “`
    $needle = ‘指定值’;
    $array = array(‘键1’ => ‘值1’, ‘键2’ => ‘值2’, ‘键3’ => ‘值3’, ‘键4’ => ‘值2’);

    $lowercaseArray = array_map(‘strtolower’, $array);
    $lowercaseNeedle = strtolower($needle);

    $key = array_search($lowercaseNeedle, $lowercaseArray);

    if($key !== false) {
    echo ‘指定值的键是:’ . $key;
    } else {
    echo ‘找不到指定值的键’;
    }
    “`

    在这个例子中,使用array_map()函数将数组中的每个值都转换为小写,并保存到$lowercaseArray数组中。然后将要查找的指定值和数组中的所有值都转换为小写,并使用array_search()函数进行查找。

    5. 多维数组的情况:
    如果数组是多维数组,可以使用递归来查找指定值的键。递归用于遍历数组中的每个元素,并根据情况进行进一步查找。

    “`
    $needle = ‘指定值’;
    $array = array(‘键1’ => array(‘内部键1’ => ‘值1’), ‘键2’ => ‘值2’, ‘键3’ => ‘值3’);

    function searchKey($needle, $array) {
    foreach($array as $key => $value) {
    if(is_array($value)) {
    $result = searchKey($needle, $value);
    if($result !== false) {
    return $key . ‘/’ . $result;
    }
    } else {
    if($value == $needle) {
    return $key;
    }
    }
    }
    return false;
    }

    $key = searchKey($needle, $array);

    if($key !== false) {
    echo ‘指定值的键是:’ . $key;
    } else {
    echo ‘找不到指定值的键’;
    }
    “`

    在这个例子中,编写了一个名为searchKey()的递归函数来查找指定值的键。函数会遍历数组中的每个元素,如果遇到多维数组,则递归执行searchKey()函数进行进一步查找。如果找到指定值,则返回完整的键路径,即父键/子键格式。如果找不到指定值,返回false。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    在PHP中,可以使用多种方法来查找数组中指定值的键。以下是其中几个常用的方法:

    方法一:array_search()
    array_search() 函数在一个数组中搜索某个值,并返回对应的键。它的语法如下:
    “`php
    $key = array_search($value, $array);
    “`
    其中,$value为要搜索的值,$array为要搜索的数组。如果找到了匹配的值,则返回对应的键,否则返回false。

    下面是一个示例:
    “`php
    $array = array(‘a’ => ‘apple’, ‘b’ => ‘banana’, ‘c’ => ‘cherry’);
    $key = array_search(‘banana’, $array);
    echo $key; // 输出 b
    “`

    需要注意的是,array_search()函数是区分大小写的,如果要进行大小写不敏感的比较,可以使用array_search()函数的第三个参数来指定比较函数:
    “`php
    $key = array_search(‘banana’, $array, true);
    “`

    方法二:array_keys()
    array_keys() 函数返回一个包含数组中所有键名的新数组,可以使用这个方法来找出包含指定值的键。它的语法如下:
    “`php
    $keys = array_keys($array, $value);
    “`
    其中,$value为要查找的值,$array为要搜索的数组。返回的$keys是一个新数组,包含了所有满足查找条件的键名。

    以下是一个示例:
    “`php
    $array = array(‘a’ => ‘apple’, ‘b’ => ‘banana’, ‘c’ => ‘cherry’, ‘d’ => ‘banana’);
    $keys = array_keys($array, ‘banana’);
    print_r($keys); // 输出 Array ( [0] => b [1] => d )
    “`

    需要注意的是,array_keys()函数默认是区分大小写的,如果要进行大小写不敏感的比较,可以使用array_keys()函数的第三个参数来指定比较函数:
    “`php
    $keys = array_keys($array, ‘banana’, true);
    “`

    方法三:使用循环遍历数组
    除了使用内置的函数,还可以使用循环遍历数组来查找指定值的键。这种方法适用于复杂的数据结构,或者想要自定义查找逻辑的情况。

    下面是一个示例:
    “`php
    $array = array(
    ‘a’ => array(‘apple’, ‘avocado’),
    ‘b’ => array(‘banana’, ‘blueberry’),
    ‘c’ => array(‘cherry’, ‘coconut’)
    );

    $searchValue = ‘blueberry’;
    $searchKey = ”;

    foreach ($array as $key => $subArray) {
    if (in_array($searchValue, $subArray)) {
    $searchKey = $key;
    break;
    }
    }

    echo $searchKey; // 输出 b
    “`

    这种方法通过循环遍历数组,然后使用in_array()函数在子数组中搜索指定值,如果找到了匹配的值,则将对应的键赋给$searchKey,并使用break语句退出循环。

    综上所述,以上是几种可以用来找到数组中指定值的键的方法。不同的方法可以根据实际需求选择合适的方式来使用。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部