0

我想知道如何限制要显示的数组的值。假设我$color的等于Indigo

我尝试通过它来实现此代码不起作用

foreach($data as $item){
    if($item['color'] == $color){
        echo $item['size'].'-'.$item['color'].'-'.$item['price'].'<br>';
    }
}

如果我if statement删除var_dump($data)

    array(16) {
  [0]=>
  array(3) {
    ["size"]=>
    string(1) "2"
    ["price"]=>
    string(6) "$59.00"
    ["color"]=>
    string(11) "Black Rinse"
  }
  [1]=>
  array(3) {
    ["size"]=>
    string(1) "2"
    ["price"]=>
    string(6) "$59.00"
    ["color"]=>
    string(6) "Indigo"
  }
  [2]=>
  array(3) {
    ["size"]=>
    string(1) "4"
    ["price"]=>
    string(6) "$59.00"
    ["color"]=>
    string(11) "Black Rinse"
  }
  [3]=>
  array(3) {
    ["size"]=>
    string(1) "4"
    ["price"]=>
    string(6) "$59.00"
    ["color"]=>
    string(6) "Indigo"
  }
  [4]=>
  array(3) {
    ["size"]=>
    string(1) "6"
    ["price"]=>
    string(6) "$59.00"
    ["color"]=>
    string(11) "Black Rinse"
  }
  [5]=>
  array(3) {
    ["size"]=>
    string(1) "6"
    ["price"]=>
    string(6) "$59.00"
    ["color"]=>
    string(6) "Indigo"
  }
  [6]=>
  array(3) {
    ["size"]=>
    string(1) "8"
    ["price"]=>
    string(6) "$59.00"
    ["color"]=>
    string(11) "Black Rinse"
  }
  [7]=>
  array(3) {
    ["size"]=>
    string(1) "8"
    ["price"]=>
    string(6) "$59.00"
    ["color"]=>
    string(6) "Indigo"
  }
  [8]=>
  array(3) {
    ["size"]=>
    string(2) "10"
    ["price"]=>
    string(6) "$59.00"
    ["color"]=>
    string(11) "Black Rinse"
  }
  [9]=>
  array(3) {
    ["size"]=>
    string(2) "10"
    ["price"]=>
    string(6) "$59.00"
    ["color"]=>
    string(6) "Indigo"
  }
  [10]=>
  array(3) {
    ["size"]=>
    string(2) "12"
    ["price"]=>
    string(6) "$59.00"
    ["color"]=>
    string(11) "Black Rinse"
  }
  [11]=>
  array(3) {
    ["size"]=>
    string(2) "12"
    ["price"]=>
    string(6) "$59.00"
    ["color"]=>
    string(6) "Indigo"
  }
  [12]=>
  array(3) {
    ["size"]=>
    string(2) "14"
    ["price"]=>
    string(6) "$59.00"
    ["color"]=>
    string(11) "Black Rinse"
  }
  [13]=>
  array(3) {
    ["size"]=>
    string(2) "14"
    ["price"]=>
    string(6) "$59.00"
    ["color"]=>
    string(6) "Indigo"
  }
  [14]=>
  array(3) {
    ["size"]=>
    string(2) "16"
    ["price"]=>
    string(6) "$59.00"
    ["color"]=>
    string(11) "Black Rinse"
  }
  [15]=>
  array(3) {
    ["size"]=>
    string(2) "16"
    ["price"]=>
    string(6) "$59.00"
    ["color"]=>
    string(6) "Indigo"
  }
}

我只想显示颜色等于的值$color。我应该如何以正确的方式做到这一点?

4

3 回答 3

2

您可能正在处理区分大小写或空格..您可以尝试:

$data = array(
        0 => array("size" => "2","price" => "$59.00","color" => "Black Rinse"),
        1 => array("size" => "2","price" => "$59.00","color" => "Indigo"));


$color = "Indigo";
foreach ( $data as $item ) {
    if (strtolower($item['color']) == strtolower($color)) {
        echo $item['size'] . '-' . $item['color'] . '-' . $item['price'] . '<br>';
    }
}

输出

2-Indigo-$59.00

观看现场演示

于 2012-10-17T00:50:42.503 回答
1

这应该可以解决您的问题(假设您正在比较两个字符串,我建议您在 if 循环中使用 strcasecmp- 进行不区分大小写的字符串比较)

foreach($data as $item){
    if(strcasecmp(trim($item['color']),trim($color))==0){
        echo $item['size'].'-'.$item['color'].'-'.$item['price'].'<br>';
    }
}
于 2012-10-17T00:51:03.557 回答
1

优雅,简单:

    $items = array(
        array('size'=>'4', 'color'=>'Indigo', 'price'=>'$59.00'), 
        array('size'=>'5', 'color'=>'black', 'price'=>'$59.00'), 
        array('size'=>'5', 'color'=>'green', 'price'=>'$54.00'),
        array('size'=>'7', 'color'=>'Indigo', 'price'=>'$50.00'),
        array('size'=>'5', 'color'=>'purple', 'price'=>'$51.00'));

   print_r(array_filter($items, function($i){
          return in_array('Indigo', $i);
      })
   );

或 PHP < 5.3:

print_r(array_filter($items, 
    create_function('$i', 'return in_array("Indigo", $i);'))
);

利用 PHP 提供的功能。

于 2012-10-17T01:17:04.247 回答