PHP獲取二維陣列中某一列的值集合

2022-10-06 09:51:11 字數 2176 閱讀 9358

php還是比較常用的,於是我研程式設計客棧究了一下php二維陣列。在處理php陣列的時候,有一種需求特別的頻繁,如下二維陣列:

$arr = array(

1=>array(

'id' => 5,

'name' => '張三'

),2=>array(

'id' => 6,

'name' => '李四'

));目的就是要取到key為name的集合,得到這個結果:

$arr2 = array(

0=>'張三',

1=>'李四'

);這裡有幾種方法:

1:最簡單的,foreach遍歷陣列:

foreach ($arr as $key => $value)

2:**量稍微少一點的**,使用了 array_map 這個php方法:

$arr2 = array_map('array_shift',$arr);

意為把$arr陣列的每一項值的開頭的值移出,並返回被移出的每一項值中被移出的值,注意此時新陣列$arr2的鍵仍是原陣列$arr的鍵

2.1:在方法2的基礎上,可以稍微開一下腦洞,如果需要獲取的是二維陣列的每一項的開頭列或結尾列,也可以這樣做:

$arr2 = array_map('reset',$arr);

$arr2 = array_map('end',$arr);

哈哈,也是很方便的

3:還可以使用 array_reduc e方法,不過**略多,不過這個方法的想象空間(針對別的陣列取值操作)還是蠻大的:

$arr2 = array_reduce($arr, create_function('$result, $v', '$result程式設計客棧 = $v["name"];return $result;'));

array_reduce方法用**函式迭代地將對陣列的值進行操作,而crbayriswzeate_function用於乙個匿名方法做**用,這個匿名方法的引數$result為上一次迭代產生的值,$v是當前的值,內部實現既為獲取到陣列$arr每一項的」name」的值並push到新$result陣列;

4:最後這個終極方法實在是太爽了,乙個方法就搞定,而且非常靈活:

$arr2 = array_column($arr, 'name');

第二個引數為想要獲取的那一列的鍵名,是不是很方便呢,不過這個方法有個限制,就是php版本必須 >= 5.5.0,在陳舊專案中使用這個方法還是得斟酌一下哈

ps: php中遍歷二維陣列的幾種方式

<?php //使用for迴圈遍歷

$arr2=array(array("張三","20","男"),array("李四","25","男"),array("王五","19","女"),array("趙六","25","女"));

echo "姓名年齡性別";

for($i=0;$i<4;$i++)

echo "";

echo "";}

echo "";

?>

//使用foreach遍歷

<?php $arr = array('one'=>array('name'=>'張三','age'=>'23','***'=>'男'),

'two'=>array('name'=>'李四','age'=>'43','***'=&程式設計客棧gt;'女'),

'three'=>array('name'=>'王五','age'=>'32','***'=>'男'),

'four'=>array('name'=>'趙六','age'=>'12','***'=>'女'));

foreach($arr as $k=>$val)

echo "";

?>

<?php $arr = array('one'=>array('name'=>'張三','age'=>'23','***'=>'男'),

'two'=>array('name'=>'李四','age'=>'43','***'=>'女'),

'three'=>array('name'=>'王五','age'=>'32','***'=>'男'),

'four'=>array('name'=>'趙六','age'=>'12','***'=>'女'));

foreach($arr as $key=>$value)

echo "";}

?>

本文標題: php獲取二維陣列中某一列的值集合

本文位址:

合併多行的某一列值

合併多行的某一列值 stuff 刪除指定的字元,並在指定的起點處插入另一組字元。create table tb id int,col1 varchar 10 go insert tb select1,曾祥展 insert tb select1,學無止境 insert tb select1,ok in...

如何獲取二維陣列的列數

二維陣列的行數可以使用length屬性獲得,但由於c 中支援不規則陣列,因此二維陣列中每一行中的列數可能不會相同,如何獲取二維陣列中每一維的列數呢?答案還是length屬性,因為二維陣列的每一維都可以看做乙個一維陣列,而一維陣列的長度是可以使用length屬性獲得。例如,下面 定義乙個不規則二維陣列...

jquery更改Reaper某一列的值

一 實現效果 通過jquery實現點選repeater中的按鈕迴圈修改快遞專線的線路狀態 1 初始效果圖 2 點選關閉專線按鈕之後的效果圖 二 mvc模式實現上述效果 sqlserverdal層 region 修改快遞線路狀態 根據自動編號 快遞線路狀態修改快遞線路資訊 自動編號 是否專線 publ...