php 數組相關方法的一些實際妙用


一、php數組合並兩個數組(一個數組做鍵名,另一個做值)

有兩個方法

1、循環

$arry_a = array(0, 1, 2);
$arry_b = array('dongsir','董先生','董先生的CSDN博客');
 
$arry_ab = [];
foreach ($arry_b as $key => $value) {
    $arry_ab[$arry_a[$key]] = $value;
}
echo "<pre>";
print_r($arry_ab);

2、array_combine函數

public function test()
{
  $arry_a = array(0, 1, 2);
  $arry_b = array('dongsir','董先生','董先生的CSDN博客');
  $arry_ab =
array_combine($arry_a ,$arry_b );
  print_r($arry_ab);
}
 

 二、php利用array_search與array_column實現二維數組查找

<?php 
$userdb = array(
    0 => array(
            'uid' => 100,
            'name' => 'Sandra Shush',
            'url' => 'urlof100'
        ),
 
    1 => array(
            'uid' => 5465,
            'name' => 'Stefanie Mcmohn',
            'pic_square' => 'urlof100'
        ),
 
    2 => Array(
            'uid' => 40489,
            'name' => 'Michael',
            'pic_square' => 'urlof40489'
        )
);
 
$found_key = array_search(40489, array_column($userdb, 'uid'));
/**
    如果$userdb很大,建議使用一個變量,避免搜索每個元素時都調用array_column()
    $uid = array_column($userdb, 'uid');
    $found_key = array_search(40489, $uid);
 */
var_dump($found_key);//返回查詢到的值的key--2
 
 ?>

三、PHP二維數組搜索返回數組

 1 $ar = array(
 2     2 => array(
 3         'catid' => 2,
 4         'catdir' => 'notice',
 5     ),
 6     5 => array(
 7         'catid' => 5,
 8         'catdir' => 'subject',
 9     ),
10     6=> array(
11         'catid' => 6,
12         'catdir' => 'news'
13     ),
14 );
15  
16 $catid = 5;
17 $r = array_filter($ar, function($t) use ($catid) { return $t['catid'] == $catid; });
18 print_r($r);

返回

1 Array
2 (
3     [5] => Array
4         (
5             [catid] => 5
6             [catdir] => subject
7         )
8  
9 )

 四、數組實現分頁功能

array_slice() -從數組中取出一段

也就是說用這個函數可以和sql語句一樣實現分頁,原理是將查詢出的數組,取出從指定下標開始到指定長度的數組

我們的數據未必都是存儲在數據庫中,很多時候是用數組來組織的。所以獲取數組數據,進行分頁是比較常見的編程要求

array_slice(原數組,開始下標,要取幾條),這里用到三個參數(如果不寫第三個參數 返回直到數組末端的所有元素)

$count = count($article);//總條數
$start=($page-1)*$pagesize;//偏移量,當前頁-1乘以每頁顯示條數
$article = array_slice($article,$start,$pagesize);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM