2017-02-10 16 views
0

如果它們存在於多維數組中,我需要能夠交換給定的值。如果在數組中,則進行替換

$cars = array 
(
    array("Volvo", "Silver", "Silver Metallic"), 
    array("BMW", "Red", "Sunset Red") 
); 

例如,如果我的對象內給出的以下值:

$myobject->make = "Volvo"; 
$myobject->color = "Silver Metallic"; 

我需要使用上面的陣列返回

不知道如何將它們連接在一起。

echo $cars[0][$myobject->make]... 

回答

3
$cars = [ 
    ['Volvo', 'Silver', 'Silver Metallic'], 
    ['BMW', 'Red', 'Sunset Red'], 
]; 

$make = 'Volvo'; 
$color = 'Silver Metallic'; 

$result = NULL; 
foreach ($cars as $c) { 
    if ($c[0] === $make && $c[2] === $color) { 
    $result = $c[1]; 
    break; 
    } 
} 
if ($result !== NULL) { 
    echo "found color: ".$result; 
} 
+0

不錯!謝謝。 – santa

0

根據這個數組如何設置,你可以做這樣的事情

$key = array_search('Silver Metallic', array_column($cars, '2')); 

在你的榜樣,$key0,這樣你就可以這樣做

echo 'Color is ' . $cars[$key][1]; 

不如foreach可擴展,但它可以工作一個李這樣的數據子集

+0

如果您有兩輛帶「Silver Metallic」顏色的汽車,這並不總是奏效。 –

+1

正如我所說,它不可擴展。不知道你在這裏做什麼,它只是一個有限的數據子集的替代方式 – Machavity

0

在這裏,您可以將您的搜索數據作爲數組傳遞給函數,並將任何一個字段保留爲空字符串'' ...該函數將返回缺少的字段。

<?php 

$cars = array(
    array("Volvo", "Silver", "Silver Metallic"), 
    array("BMW", "Red", "Sunset Red") 
); 

function getSpecificValue($cars, $data) 
{ 
    foreach ($cars as $car) { 

     if ($data['make'] === '') { 
      if ($car[1] === $data['color'] && $car[2] === $data['color_name']) { 
       return $car[0]; 
      } 
     } elseif ($data['color'] === '') { 
      if ($car[0] === $data['make'] && $car[2] === $data['color_name']) { 
       return $car[1]; 
      } 
     } elseif ($data['color_name'] === '') { 
      if ($car[0] === $data['make'] && $car[1] === $data['color']) { 
       return $car[2]; 
      } 
     } 
    } 
} 

$data = [ 
    'make'  => 'BMW', 
    'color'  => 'Red', 
    'color_name' => '', 
]; 

$result = getSpecificValue($cars, $data); 

var_dump($result); 
相關問題