设置阵列阵列中的元素

问题描述:

如果汽车阵列里面的第三个元素是真的,我想设置其他元素为真。如何实现它?设置阵列阵列中的元素

<?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

只要改变两两件事,如下所述,尝试:

$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 
     ) 

) 

你几乎关闭,才使这一变化,使用参考符号&实际变化

from

foreach($cars as $keys){ 

foreach($cars as &$keys){ 

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

$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'; 
    } 
} 

这儿有你

<?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); 
}