Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在_array()中为PHP获取正确格式的db数据_Php_Mysql_Arrays - Fatal编程技术网

无法在_array()中为PHP获取正确格式的db数据

无法在_array()中为PHP获取正确格式的db数据,php,mysql,arrays,Php,Mysql,Arrays,我已经尝试了所有可以想象的方法,但是当我从db值动态创建一个数组时,我似乎无法将其正确格式化以使用\u array()中的。我相信问题只是需要将每个值都用引号括起来,因为我可以在硬编码数组中使用in_array(),只要它的格式是那样的,但是我无法用分解或内爆添加引号 我想做的是:这是一个非常简单的例子,我想做的是,根据产品与客户偏好列表的匹配程度过滤查询结果(无注入风险,我尝试过使用PDO和不使用PDO) 我知道有几个非常类似的帖子,但在花了比我愿意承认的更多的时间尝试实施我看到的每一个教程和

我已经尝试了所有可以想象的方法,但是当我从db值动态创建一个数组时,我似乎无法将其正确格式化以使用\u array()中的
。我相信问题只是需要将每个值都用引号括起来,因为我可以在硬编码数组中使用
in_array()
,只要它的格式是那样的,但是我无法用
分解
内爆
添加引号

我想做的是:这是一个非常简单的例子,我想做的是,根据产品与客户偏好列表的匹配程度过滤查询结果(无注入风险,我尝试过使用PDO和不使用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'); 
}

我需要如何构造阵列

$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'); 
变量转储的结果($colors\u love\u Array)is:

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

作为的文档状态:

$Color='Black';
  if (strpos($Color, $colors_love_Arrays[0]) !== false) {
    echo "Matches: ", $Color;
$Color='Black';
  if (preg_match('/(?:^|,)('.$Color.')(?:,|$)/', "Black,Charcoal,Light_Gray,White,Royal_Blue,Dodger_Blue,Red ") !== false)
    echo "Matches: ", $Color;
in_array-检查数组中是否存在值

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

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

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

$Color='Black';
  if (strpos($Color, $colors_love_Arrays[0]) !== false) {
    echo "Matches: ", $Color;
$Color='Black';
  if (preg_match('/(?:^|,)('.$Color.')(?:,|$)/', "Black,Charcoal,Light_Gray,White,Royal_Blue,Dodger_Blue,Red ") !== false)
    echo "Matches: ", $Color;
但是,如果您有类似的颜色,比如说,
WeirdBlack
,它就会匹配

事实上:

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

Matches: WeirdBlack;

或者,您要使用

$Color='Black';
  if (strpos($Color, $colors_love_Arrays[0]) !== false) {
    echo "Matches: ", $Color;
$Color='Black';
  if (preg_match('/(?:^|,)('.$Color.')(?:,|$)/', "Black,Charcoal,Light_Gray,White,Royal_Blue,Dodger_Blue,Red ") !== false)
    echo "Matches: ", $Color;
所使用的正则表达式是“
”/(?:^ |,)(“.$Color.”)(?:,|$)/”


您可能希望获得一个数组。然后使用:

然后像这样使用它:

$Color='Black';
  if (in_array($Color, $arr)) {
    echo "Matches: ", $Color;
}
或者再次使用

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

作为的文档状态:

$Color='Black';
  if (strpos($Color, $colors_love_Arrays[0]) !== false) {
    echo "Matches: ", $Color;
$Color='Black';
  if (preg_match('/(?:^|,)('.$Color.')(?:,|$)/', "Black,Charcoal,Light_Gray,White,Royal_Blue,Dodger_Blue,Red ") !== false)
    echo "Matches: ", $Color;
in_array-检查数组中是否存在值

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

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

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

$Color='Black';
  if (strpos($Color, $colors_love_Arrays[0]) !== false) {
    echo "Matches: ", $Color;
$Color='Black';
  if (preg_match('/(?:^|,)('.$Color.')(?:,|$)/', "Black,Charcoal,Light_Gray,White,Royal_Blue,Dodger_Blue,Red ") !== false)
    echo "Matches: ", $Color;
但是,如果您有类似的颜色,比如说,
WeirdBlack
,它就会匹配

事实上:

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

Matches: WeirdBlack;

或者,您要使用

$Color='Black';
  if (strpos($Color, $colors_love_Arrays[0]) !== false) {
    echo "Matches: ", $Color;
$Color='Black';
  if (preg_match('/(?:^|,)('.$Color.')(?:,|$)/', "Black,Charcoal,Light_Gray,White,Royal_Blue,Dodger_Blue,Red ") !== false)
    echo "Matches: ", $Color;
所使用的正则表达式是“
”/(?:^ |,)(“.$Color.”)(?:,|$)/”


您可能希望获得一个数组。然后使用:

然后像这样使用它:

$Color='Black';
  if (in_array($Color, $arr)) {
    echo "Matches: ", $Color;
}
或者再次使用

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

作为的文档状态:

$Color='Black';
  if (strpos($Color, $colors_love_Arrays[0]) !== false) {
    echo "Matches: ", $Color;
$Color='Black';
  if (preg_match('/(?:^|,)('.$Color.')(?:,|$)/', "Black,Charcoal,Light_Gray,White,Royal_Blue,Dodger_Blue,Red ") !== false)
    echo "Matches: ", $Color;
in_array-检查数组中是否存在值

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

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

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

$Color='Black';
  if (strpos($Color, $colors_love_Arrays[0]) !== false) {
    echo "Matches: ", $Color;
$Color='Black';
  if (preg_match('/(?:^|,)('.$Color.')(?:,|$)/', "Black,Charcoal,Light_Gray,White,Royal_Blue,Dodger_Blue,Red ") !== false)
    echo "Matches: ", $Color;
但是,如果您有类似的颜色,比如说,
WeirdBlack
,它就会匹配

事实上:

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

Matches: WeirdBlack;

或者,您要使用

$Color='Black';
  if (strpos($Color, $colors_love_Arrays[0]) !== false) {
    echo "Matches: ", $Color;
$Color='Black';
  if (preg_match('/(?:^|,)('.$Color.')(?:,|$)/', "Black,Charcoal,Light_Gray,White,Royal_Blue,Dodger_Blue,Red ") !== false)
    echo "Matches: ", $Color;
所使用的正则表达式是“
”/(?:^ |,)(“.$Color.”)(?:,|$)/”


您可能希望获得一个数组。然后使用:

然后像这样使用它:

$Color='Black';
  if (in_array($Color, $arr)) {
    echo "Matches: ", $Color;
}
或者再次使用

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

作为的文档状态:

$Color='Black';
  if (strpos($Color, $colors_love_Arrays[0]) !== false) {
    echo "Matches: ", $Color;
$Color='Black';
  if (preg_match('/(?:^|,)('.$Color.')(?:,|$)/', "Black,Charcoal,Light_Gray,White,Royal_Blue,Dodger_Blue,Red ") !== false)
    echo "Matches: ", $Color;
in_array-检查数组中是否存在值

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

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

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

$Color='Black';
  if (strpos($Color, $colors_love_Arrays[0]) !== false) {
    echo "Matches: ", $Color;
$Color='Black';
  if (preg_match('/(?:^|,)('.$Color.')(?:,|$)/', "Black,Charcoal,Light_Gray,White,Royal_Blue,Dodger_Blue,Red ") !== false)
    echo "Matches: ", $Color;
但是,如果您有类似的颜色,比如说,
WeirdBlack
,它就会匹配

事实上:

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

Matches: WeirdBlack;

或者,您要使用

$Color='Black';
  if (strpos($Color, $colors_love_Arrays[0]) !== false) {
    echo "Matches: ", $Color;
$Color='Black';
  if (preg_match('/(?:^|,)('.$Color.')(?:,|$)/', "Black,Charcoal,Light_Gray,White,Royal_Blue,Dodger_Blue,Red ") !== false)
    echo "Matches: ", $Color;
所使用的正则表达式是“
”/(?:^ |,)(“.$Color.”)(?:,|$)/”


您可能希望获得一个数组。然后使用:

然后像这样使用它:

$Color='Black';
  if (in_array($Color, $arr)) {
    echo "Matches: ", $Color;
}
或者再次使用

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

结果不应该是一个数组,而不是一个用逗号分隔的字符串吗

不管怎样,你的结果就是上面的var_

$parts = explode( ',', trim( $colors_love_Array ) );
if( in_array( 'Black', $parts ) )
    echo "is here\n";
但我想你真的想得到这个:

"Black,Charcoal,Light_Gray,White,Royal_Blue,Dodger_Blue,Red"

作为一个数组。因为我不知道数据库中有什么,所以我不能在这方面提供建议。

您的结果不应该是一个数组,而不是一个用逗号分隔的字符串吗

不管怎样,你的结果就是上面的var_

$parts = explode( ',', trim( $colors_love_Array ) );
if( in_array( 'Black', $parts ) )
    echo "is here\n";
但我想你真的想得到这个:

"Black,Charcoal,Light_Gray,White,Royal_Blue,Dodger_Blue,Red"

作为一个数组。因为我不知道数据库中有什么,所以我不能在这方面提供建议。

您的结果不应该是一个数组,而不是一个用逗号分隔的字符串吗

不管怎样,你的结果就是上面的var_

$parts = explode( ',', trim( $colors_love_Array ) );
if( in_array( 'Black', $parts ) )
    echo "is here\n";
但我想你真的想得到这个:

"Black,Charcoal,Light_Gray,White,Royal_Blue,Dodger_Blue,Red"

作为一个数组。因为我不知道数据库中有什么,所以我不能在这方面提供建议。

您的结果不应该是一个数组,而不是一个用逗号分隔的字符串吗

不管怎样,你的结果就是上面的var_

$parts = explode( ',', trim( $colors_love_Array ) );
if( in_array( 'Black', $parts ) )
    echo "is here\n";
但我想你真的想得到这个:

"Black,Charcoal,Light_Gray,White,Royal_Blue,Dodger_Blue,Red"

作为一个数组。因为我不知道您的数据库中有什么内容,所以我无法在这方面提供建议。

请检查此项,我认为它应该适合您

$colors\u love\u Array=Array()
$result=mysql\u query(“SELECT*FROM style WHERE style.user\u id=$user\u id”)或die(mysql\u error())

而($row\u profile=mysql\u fetch\u array($result)){
//这两种方法我都试过了,分别试过,也一起试过
$colors\u love\u Array[]=$row\u profile['colors\u love'];
}

$newColorsArray=爆炸(“,”,内爆($colors\u love\u Array))

if(在数组中($Color,$newColorsArray)){
回声“匹配:.$Color;
}


看看这个,我想它应该适合你

$colors\u love\u Array=Array()
$result=mysql\u查询(“从样式中选择*