php獲取二維數組中key鍵值的例子

二維數組中一般會有多個key了,如果我們要獲得指定key的值可以和小編一起來看一篇php獲取二維數組中key鍵值的例子,希望文章能夠幫助到各位朋友。


在處理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) {

$arr2[] = $value['name'];

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

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

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

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



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

哈哈,也是很方便的

3:還可以使用array_reduce方法,不過代碼略多,不過這個方法的想象空間(針對別的數組取值操作)還是蠻大的:


$arr2 = array_reduce($arr, create_function('$result, $v', '$result[] = $v["name"];return $result;'));

array_reduce方法用回調函數疊代地將對數組的值進行操作,而create_function用于一個匿名方法做回調用,這個匿名方法的參數$result爲上一次疊代産生的值,$v是當前的值,內部實現既爲獲取到數組$arr每一項的”name”的值並push到新$result數組;

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


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

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

隨機獲取二維數組中的一個值

$arr1 = array(
'p1'=>array('ky_d'=>'福建省泉州市豐澤區華大街道1','ky_s'=>'350503005'),
'p2'=>array('ky_d'=>'福建省泉州市豐澤區華大街道2','ky_s'=>'350503006'),
'p3'=>array('ky_d'=>'福建省泉州市豐澤區華大街道3','ky_s'=>'350503007')

);
$temp = array_rand($arr1,1);
// print_r($temp);
echo $arr1[$temp]['ky_d'].':'.$arr1[$temp]['ky_s'];

獲取一維或多維數組某個特定鍵(數組下標)的所有值 .

/*
author: yangyu@sina.cn
description: 根據某一特定鍵(下標)取出一維或多維數組的所有值;不用循環的理由是考慮大數組的效率,把數組序列化,然後根據序列化結構的特點提取需要的字符串
*/
function array_get_by_key(array $array, $string){
if (!trim($string)) return false;
preg_match_all("/\"$string\";\w{1}:(?:\d+:|)(.*?);/", serialize($array), $res);
return $res[1];
}


$r = array('id'=> 1, 's'=> 23, 'a' => array('s' => 123, array(1, 2, 's' => "asdasdgsadggsadg")));
echo '<pre>';
print_r (array_get_by_key($r, 's'));
/*
result:
Array
(
[0] => 23
[1] => 123
[2] => "asdasdgsadggsadg"
)
*/

更多相關文章
  • 一個利用php中array_unique實現去除二級數組重複值的方法,有需要的朋友可參考參考. 代碼如下 <?php$input = array(“a” => “green”,”", “red”,”b” => “gr
  • 昨天還寫了一篇關于數組合並的技術文章,那裏我介紹的是一維數組合並,這裏介紹一下php二維數組的合並方法,希望對各位同學會有所幫助哦.例1自定義方法合並數組先看一個二維數組: 代碼如下 <?phpArray ( [0] => Array ( [A] => store_name [B] ...
  • REDIS數據庫其實與mysql數據庫在很多的用法上是一樣的,今天 我們要介紹的是REDIS存取PHP多維數組的示例,如果有需要可以和小編一起來學學.PHP數組實際上是哈希表,Redis似乎不支持二維數組,但是可以使
  • 因爲.net開發環境支持多語方,所以就會碰到C類的與vb.net的寫法有出入,今天我們把兩個都歸類出來了,有需要的朋友可以看看. 代碼如下 using System;class Program{ static voi
  • python獲取A股數據列表的例子
    現在我相信各位對于中國的股票是又愛又恨吧,我們今天來做一個小小的測試就是利用python來
  • array_multisort函數是php自帶對二維數據進行排序的函數,下面我們一起來看看多維數組排序 array_multisort函數用法,希望文章能夠幫助到各位.對2維數組或者多維數組排序是常見的問題,在php中我們有個專門的多維數組排序函數,下面簡單介紹下:array_multisort(a ...
  • 一般在數據分頁的時候需要獲取當前頁的數據和總條數,一般人是在model中封裝兩個函數分別獲取當前頁的數據和數據總條數,業務邏輯類似,感覺有點冗余,可以封裝在一起 代碼如下 /** * 獲取分頁數據及總條數 * @pa
  • 參數中的數組被當成一個表的列並以行來進行排序 - 這類似 sql 的 order by 子句的功能.第一個數組是要排序的主要數組.數組中的行(值)比較爲相同的話,就會按照下一個輸入數組中相應值的大小進行排序,依此類推
一周排行
  • JavaBean是描述Java的軟件組件模型,有點類似于Microsoft的COM組件概念.本文我們來講講在java開發中如何動態注冊到spring框架容器.原先的設計是通過已有的庫,將數據通過rmi寫入到遠程伺服器
  • PHP 7新特性介紹詳解介紹
    PHP 7新特性有那些?PHP 7新特性主要是在效能上提升了不少了,我們可以不使用php加
  • 用 FillaZilla 客戶端連接 vsftp 軟件建立了FTP伺服器時,出現錯誤"Failed to retrieve directory listing",以下是問題解決辦法.在伺服器上用v ...
  • 在 windows 下安裝 php教程 時, 爲了避免配置文件混亂,將安裝目錄下的 php.ini 複制到 windows 目錄下之後,應該將原來安裝目錄下的 php.ini 文件重命名或刪除,以免造成在不同環境下執
  • Ubuntu系統安裝Apache+MySQL+PHP+PERL(XAMPP)環境
    XAMPP環境是Apache+MySQL+PHP+PERL了,它完全可以在linux內核系 ...
  • 本文章簡單的介紹了關于js的變量和try catch()用法,有需要的朋友可以參考一下下.E中有一個鮮爲人知的功能,稱之爲條件編譯(conditional compilation).自IE4開始支持條件編譯至今,此功
  • js xmlhttp對象ie浏覽器和非ie浏覽器創建方法 例子:創建一個xmlhttp對象,並向伺服器請求一個xml文檔,返回文檔後顯示.下面分別就ie和非ie進行實例講解 1) ie浏覽器使用activexobje
  • 三星J5008應用程序頁面變化
    三星J5008應用程序頁面變化是什麽東西一聚教程小編也沒有看懂了,這裏給各位整理了一篇文章
  • Underscore一個JavaScript實用庫,提供了一整套函數式編程的實用功能,但是沒有擴展任何JavaScript內置對象.現在我們來講講Underscore.js中sortBy逆序.Underscore.j ...
  • 本文我們來講講Python的內置函數help()命令的使用方法,help()看字面就知道是幫助的意思,沒錯,這個就是幫助函數,如果我們不知道某函數的使用,就可以help一下.help函數是python的一個內置函數, ...