2016-07-22 181 views
0

如果汽車陣列裏面的第三個元素是真的,我想設置其他元素爲真。如何實現它?設置陣列陣列中的元素

<?php 
    $cars = array 
      (
      array(1,1,'f'), 
      array(2,2,'f'), 
      array(3,3,'t'), 
      array(4,4,'f') 
     ); 

     foreach($cars as $keys){ 
      if($keys[2]=='t') 
      $count=1; 
     } 

     foreach($cars as $keys){ 
      if($count==1) 
      $keys[2] = 't'; 
     } 
     print_r($cars); 
    ?> 
+1

你爲什麼要使用一個名爲 「F」 和一個名爲strnig「串解t「而不是布爾值true和false? – Xatenev

+0

f和t是沒有布爾類型的字符串@Xatenev – art

+0

確切地說,問題是*爲什麼*您使用f'和t''而不是'true'和'false'。 – deceze

回答

1

只要改變兩兩件事,如下所述,嘗試:

$cars = array 
    (
    array(1,1,'f'), 
    array(2,2,'f'), 
    array(3,3,'t'), 
    array(4,4,'f') 
); 
$count = 0; // declare $count 
foreach($cars as $keys){ 
    if($keys[2]=='t') 
     $count=1; 
} 
foreach($cars as $key=>$keys){ 
    if($count==1) 
    $cars[$key][2] = 't'; // change value to t like this 
} 

輸出:

Array 
(
    [0] => Array 
     (
      [0] => 1 
      [1] => 1 
      [2] => t 
     ) 

    [1] => Array 
     (
      [0] => 2 
      [1] => 2 
      [2] => t 
     ) 

    [2] => Array 
     (
      [0] => 3 
      [1] => 3 
      [2] => t 
     ) 

    [3] => Array 
     (
      [0] => 4 
      [1] => 4 
      [2] => t 
     ) 

) 
1

你幾乎關閉,才使這一變化,使用參考符號&實際變化

from

foreach($cars as $keys){ 

foreach($cars as &$keys){ 

檢查:https://eval.in/609879

1
$exists= false; 
foreach($cars as $car) 
{ 
    if($car[2] == 't') 
    { 
     $exists= true; 
    } 
} 

if($exists) 
{ 
    for($i=0; $i<count($cars); $i++) 
    { 
     $cars[$i][2] = 't'; 
    } 
} 
0

這兒有你

<?php 

$cars = array(
    array(1,1,'f'), 
    array(2,2,'f'), 
    array(3,3,'t'), 
    array(4,4,'f') 
); 

if(in_array('t', array_column($cars, 2))){ 
    $cars = array_map(function($v){ 
     $v[2] = 't'; 
     return $v; 
    }, $cars); 
}