从二维数组中获取具有限定值的行的索引

新手上路,请多包涵

我在 PHP 中有这个数组:

 array(
    [0] => array( 'username' => 'user1' )
    [1] => array( 'username' => 'user2' )
)

如果我有“用户名”字符串,如何将索引值作为数字获取?

例如,如果我有’user1’,我怎么能得到 0?

原文由 roflwaffle 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 449
2 个回答

如果您有一个二维数组,就像在您的示例中一样,您需要稍微自定义一些东西:

 function array_search2d($needle, $haystack) {
    for ($i = 0, $l = count($haystack); $i < $l; ++$i) {
        if (in_array($needle, $haystack[$i])) return $i;
    }
    return false;
}

$myArray = array(
    array( 'username' => 'user1' ),
    array( 'username' => 'user2' )
);
$searchTerm = "user1";

if (false !== ($pos = array_search2d($searchTerm, $myArray))) {
    echo $searchTerm . " found at index " . $pos;
} else {
    echo "Could not find " . $searchTerm;
}

如果您只想在一个特定字段中搜索,您可以将函数更改为如下所示:

 function array_search2d_by_field($needle, $haystack, $field) {
    foreach ($haystack as $index => $innerArray) {
        if (isset($innerArray[$field]) && $innerArray[$field] === $needle) {
            return $index;
        }
    }
    return false;
}

原文由 nickf 发布,翻译遵循 CC BY-SA 2.5 许可协议

如果您知道键是 username ,只需使用数组作为搜索参数:

 $username = 'user1';
$key = array_search(array('username' => $username), $array);

原文由 AbraCadaver 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题