gpt4 book ai didi

php - 无法以正确格式为 PHP in_array() 获取数据库数据

转载 作者:太空宇宙 更新时间:2023-11-03 12:06:57 25 4
gpt4 key购买 nike

我已经尝试了所有可以想象的方法,但是当我从 db 值动态创建数组时,我似乎无法正确格式化它以使用 in_array()。我认为问题只是需要用引号括起每个值,因为只要以这种方式格式化,我就可以毫无问题地将 in_array() 与硬编码数组一起使用,但我没有无法使用 explodeimplode 添加引号。

我正在尝试做的事情:这是我正在尝试做的事情的一个非常简单的示例,即根据产品与客户列表的匹配程度来过滤查询结果首选项(没有注入(inject)的风险,我已经尝试过使用和不使用 PDO)。

我知道有几个非常相似的帖子,但在尝试实现我看到的每个教程和帖子后,我花了比我愿意承认的更多的时间,我决定是时候向社区求助了.

in_array() 语句

  $Color='Black';
if (in_array($Color, $colors_love_Arrays)) {
echo "Matches: ", $Color;
}

查询哪个构成数组

$colors_love_Array = array(); 
$result = mysql_query("SELECT * FROM style WHERE style.user_id = $user_id") or die(mysql_error());

while ($row_profile = mysql_fetch_array($result)) {
// I've tried both of these, both separately and together
$colors_love_Array[] = $row_profile['colors_love'];
$colors_love_Array = explode('",', $row_profile['colors_love']);

我需要如何构造数组

$colors_love_Array = array('Black','Charcoal','Light_Gray','White','Royal_Blue','Dodger_Blue','Red'); 

var_dump ($colors_love_Array); 的结果是:

array(1) { [0]=> string(59) "Black,Charcoal,Light_Gray,White,Royal_Blue,Dodger_Blue,Red " } 

最佳答案

作为 in_array 的文档状态:

in_array — Checks if a value exists in an array

但是 var_dump 清楚地告诉您,您想要的嵌套值是一个字符串。

array(1) { [0]=> string(59) trim("Black,Charcoal,Light_Gray,White,Royal_Blue,Dodger_Blue,Red ") }
^^^^^^

一种可能的方法是使用 strpos 而不是 in_array :

$Color='Black';
if (strpos($Color, $colors_love_Arrays[0]) !== false) {
echo "Matches: ", $Color;

但是,如果您有颜色,比如 WeirdBlack,它就会匹配。

确实:

$Color='Black';
if (strpos($Color, "WeirdBlack") !== false) {
echo "Matches: ", $Color;

输出

Matches: WeirdBlack;

或者你想使用 preg_match :

$Color='Black';
if (preg_match('/(?:^|,)('.$Color.')(?:,|$)/', "Black,Charcoal,Light_Gray,White,Royal_Blue,Dodger_Blue,Red ") !== false)
echo "Matches: ", $Color;

使用的正则表达式是 '/(?:^|,)('.$Color.')(?:,|$)/':

DEMO


您可能想要获取一个数组。然后使用 explode :

$arr = explode(',', trim($colors_love_Array[0]));

然后像这样使用它:

$Color='Black';
if (in_array($Color, $arr)) {
echo "Matches: ", $Color;
}

或使用 preg_match 再次:

$Color = 'Black';
$arr = explode(',', trim("Black,Charcoal,Light_Gray,White,Royal_Blue,Dodger_Blue,Red "));
if (preg_grep('/('.$Color.')/', $arr))
echo 'match';

关于php - 无法以正确格式为 PHP in_array() 获取数据库数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26087830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com