在多维数组中搜索字符串并获取键

4

我正在使用PDO API,并且使用fetchAll()返回一个多维数组;下面的代码片段仅为测试场景;我只想知道是否可能。

$LeUsername = "BravoSlayer"; 
$sth = $dbh->prepare("SELECT * FROM users WHERE Username='$LeUsername'");
$sth->execute();
$result = $sth->fetchAll();
print_r($result);
$ArraySearch = search_array($result, $LeUsername); 

输出结果如下:

Array ( [0] => Array ( [ID] => 1 [0] => 1 [Username] => bravoslayer [1] => bravoslayer [Password] => thisisatest [2] => thisisatest ) ) 

我希望能够通过搜索多维数组来返回键值。在这种情况下,它将是0,因此我只需为$Array1关联另一个变量变量= $Array1 ['0'],从那时起,我就可以这样做:

$Username = $Array1['Username']; 

你为什么要这样做? - onlineapplab.com
@onlineapplab.com 我认为 OP 想要搜索多维数组以查找字符串;如果找到字符串,它将返回数组第一层的键。 - Daryl Gill
жҲ‘еҫҲж„ҹе…ҙи¶Јдёәд»Җд№Ҳд»–жғіиҰҒеҲқе§ӢеҢ–$Array1并дҪҝз”Ё$Array1 ['Username']иҖҢдёҚжҳҜдҪҝз”Ё$result [0] ['Username']гҖӮжӯӨеӨ–пјҢSQL WHEREжқЎд»¶дёӯжңүдёҖдёӘз”ЁжҲ·еҗҚпјҢеӣ жӯӨжҜҸжқЎи®°еҪ•йғҪе°Ҷе…·жңүзӣёеҗҢзҡ„з”ЁжҲ·еҗҚгҖӮ - onlineapplab.com
@onlineapplab.com 我猜使用 $result['Username']$result['0']['Username'] 对他来说会更容易,不过在我们得到 OP 的回复之前,我们不会知道确切情况。不过我还是对这种方法很感兴趣。 - Daryl Gill
1个回答

0
根据你的问题,你可以在一个foreach循环中搜索主数组,并使用in_array返回正确的数组。
将此作为参考。
function Search_Array($Array, $SearchDilema)
    {
        foreach ($Array AS $CheckKeys)
        {
            if (in_array($SearchDilema, $CheckKeys))
            {
                return $CheckKeys;
            }
            else
            {
                $ErrorMsg = "No Results Found! Check Your Search Dilema"; 
                return $ErrorMsg;
            }
        }

    }

谢谢。这个运作得非常完美。$Test = Search_Array($result, $LeUsername); 调用那个函数吗? - user1902584
你的循环将仅搜索数组的第一个元素。 - onlineapplab.com
@onlineapplab.com 很抱歉耽搁了。这将返回一个多维数组,具有查询结构,是的.. 它只会搜索第一个元素,但如果数组是 0 => array("test","find") 1=> array("test2", "find2"),它将更改每个元素的数组,搜索内部数组.. 在这种情况下,搜索 array[1][x] 然后是 array[2][x] 等,并返回传递给函数的正确数组。 - Daryl Gill
你需要将'return $ErrorMsg'移出foreach循环以实现此目的。 - onlineapplab.com

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接