Home  >  Article  >  Backend Development  >  Corresponding operations of php on two-dimensional arrays

Corresponding operations of php on two-dimensional arrays

墨辰丷
墨辰丷Original
2018-06-06 14:08:476888browse

This article mainly introduces the corresponding operations of PHP on two-dimensional arrays. Interested friends can refer to it. I hope it will be helpful to everyone.

Tips:

array_keys($array) //返回所有键名 
 
array_values($array) //返回所有键值  
 
$result=array_reverse($input); //将数组颠倒,不保留键名 
$result_keyed=array_reverse($input,true); //将数组颠倒,保留键名 
 
array_keys($array,"blue"); //返回值为blue的键名

1. PHP 2 Dimensional array deduplication function
PHP array has a built-in function to remove duplicatesarray_unique (), but PHP’s array_unique function only applies to one-dimensional arrays. Multi-dimensional arrays are not applicable. The array_unique function of a two-dimensional array is provided below

function unique_arr($array2D,$stkeep=false,$ndformat=true) 
{ 
  // 判断是否保留一级数组键 (一级数组键可以为非数字) 
  if($stkeep) $stArr = array_keys($array2D); 
 
  // 判断是否保留二级数组键 (所有二级数组键必须相同) 
  if($ndformat) $ndArr = array_keys(end($array2D)); 
 
  //降维,也可以用implode,将一维数组转换为用逗号连接的字符串 
  foreach ($array2D as $v){ 
    $v = join(",",$v);  
    $temp[] = $v; 
  } 
 
  //去掉重复的字符串,也就是重复的一维数组 
  $temp = array_unique($temp);  
 
  //再将拆开的数组重新组装 
  foreach ($temp as $k => $v) 
  { 
    if($stkeep) $k = $stArr[$k]; 
    if($ndformat) 
    { 
      $tempArr = explode(",",$v);  
      foreach($tempArr as $ndkey => $ndval) $output[$k][$ndArr[$ndkey]] = $ndval; 
    } 
    else $output[$k] = explode(",",$v);  
  } 
 
  return $output; 
}


$array2D = array('first'=>array('title'=>'1111','date'=>'2222'),'second'=>array('title'=>'1111','date'=>'2222'),'third'=>array('title'=>'2222','date'=>'3333')); 
 
 
print_r($array2D); 
print_r(unique_arr($array2D,true));

2. Sorting method of two-dimensional array
Sorting method of one-dimensional array:
Public functions:

function printr($arr) 
{ 
  echo &#39;<pre class="brush:php;toolbar:false">&#39;;  
  print_r($arr); 
  echo &#39;

'; }

The first group: sort and rsort , sort according to the order asc and reverse order desc of the PHP array key value, At the same time, the index relationship of the original array is destroyed - in fact, the digital index starting from 0 is re-established after deleting the index.

$a = array(&#39;a&#39;=>1,2);  
sort($a); printr($a);  
rsort($a); printr($a); 
 
/*Array 
( 
  [0] => 1 
  [1] => 2 
) 
 
Array 
( 
  [0] => 2 
  [1] => 1 
) 
*/

The second set of functions: asort and arsort, These two functions are more powerful One point, as long as they can retain the original index relationship of the array, replace the sort and rsort in the above example with these two functions respectively

$a = array(&#39;a&#39;=>1,2); 
asort($a); printr($a);   
arsort($a); printr($a);  
/* 
Array 
( 
  [a] => 1 
  [0] => 2 
) 
 
Array 
( 
  [0] => 2 
  [a] => 1 
) 
*/

The third group of PHP array sorting functions: krsort and ksort, These two are different from the above two groups. These two functions sort key names.

$a = array(&#39;a&#39;=>1,2); 
 ksort($a); printr($a);   
krsort($a); printr($a); 
 
/* 
Array 
( 
  [0] => 2 
  [a] => 1 
) 
 
Array 
( 
  [a] => 1 
  [0] => 2 
) 
*/

Sort PHP arrays through custom functions. There are three functions:
uasort Sort the key values ​​​​of PHP arrays through custom functions. And retain the original index relationship.
uksort sorts the key names of the PHP array through a custom function and retains the original index relationship.
usort sorts the key values ​​of the PHP array through a custom function, deletes the original index relationship, and creates a new index from scratch.
The following is two-dimensional sorting:

/** 
 * @package   BugFree 
 * @version   $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $ 
 * 
 * 
 * Sort an two-dimension array by some level two items use array_multisort() function. 
 * 
 * sortArr($Array,"Key1","SORT_ASC","SORT_RETULAR","Key2"……) 
 * @author           Chunsheng Wang <wwccss@263.net> 
 * @param array  $ArrayData  the array to sort. 
 * @param string $KeyName1  the first item to sort by. 
 * @param string $SortOrder1 the order to sort by("SORT_ASC"|"SORT_DESC") 
 * @param string $SortType1  the sort type("SORT_REGULAR"|"SORT_NUMERIC"|"SORT_STRING") 
 * @return array        sorted array. 
 */ 
function sortArr($ArrayData,$KeyName1,$SortOrder1 = "SORT_ASC",$SortType1 = "SORT_REGULAR") 
{ 
  if(!is_array($ArrayData)) return $ArrayData; 
   
  // Get args number. 
  $ArgCount = func_num_args(); 
  // Get keys to sort by and put them to SortRule array. 
  for($I = 1;$I < $ArgCount;$I ++) 
  { 
    $Arg = func_get_arg($I); 
    if(!eregi("SORT",$Arg)) 
    { 
      $KeyNameList[] = $Arg; 
      $SortRule[]  = &#39;$&#39;.$Arg; 
    } 
    else $SortRule[]  = $Arg; 
  } 
  // Get the values according to the keys and put them to array. 
  foreach($ArrayData AS $Key => $Info) 
  { 
    foreach($KeyNameList AS $KeyName) ${$KeyName}[$Key] = strtolower($Info[$KeyName]); 
  } 
   
  // Create the eval string and eval it. 
  $EvalString = &#39;array_multisort(&#39;.join(",",$SortRule).&#39;,$ArrayData);&#39;; 
  eval ($EvalString); 
  return $ArrayData; 
}

Example:

//################# 示例 ################# 
$arr = array( 
 array( 
   &#39;name&#39;    =>  &#39;学习&#39;, 
   &#39;size&#39;    =>  &#39;1235&#39;, 
   &#39;type&#39;    =>  &#39;jpe&#39;, 
   &#39;time&#39;    =>  &#39;1921-11-13&#39;, 
   &#39;class&#39;    =>  &#39;dd&#39;, 
 ), 
 array( 
   &#39;name&#39;    =>  &#39;中国功夫&#39;, 
   &#39;size&#39;    =>  &#39;153&#39;, 
   &#39;type&#39;    =>  &#39;jpe&#39;, 
   &#39;time&#39;    =>  &#39;2005-11-13&#39;, 
   &#39;class&#39;    =>  &#39;jj&#39;, 
 ), 
 array( 
   &#39;name&#39;    =>  &#39;编程&#39;, 
   &#39;size&#39;    =>  &#39;35&#39;, 
   &#39;type&#39;    =>  &#39;gif&#39;, 
   &#39;time&#39;    =>  &#39;1997-11-13&#39;, 
   &#39;class&#39;    =>  &#39;dd&#39;, 
 ), 
 array( 
   &#39;name&#39;    =>  &#39;中国功夫&#39;, 
   &#39;size&#39;    =>  &#39;65&#39;, 
   &#39;type&#39;    =>  &#39;jpe&#39;, 
   &#39;time&#39;    =>  &#39;1925-02-13&#39;, 
   &#39;class&#39;    =>  &#39;yy&#39;, 
 ), 
 array( 
   &#39;name&#39;    =>  &#39;中国功夫&#39;, 
   &#39;size&#39;    =>  &#39;5&#39;, 
   &#39;type&#39;    =>  &#39;icon&#39;, 
   &#39;time&#39;    =>  &#39;1967-12-13&#39;, 
   &#39;class&#39;    =>  &#39;rr&#39;, 
 ), 
); 
 
echo &#39;<pre class="brush:php;toolbar:false">&#39;; 
print_r($arr); echo &#39;<br>&#39;; 
 
//注意:按照数字方式排序时 153 比 65 小 
$temp = sortArr($arr,"name","SORT_ASC","type","SORT_DESC","size","SORT_ASC","SORT_STRING"); 
 
print_r($temp); 
 
echo &#39;
';

3. Convert multi-dimensional array to one-dimensional array

function rebuild_array($arr){ //rebuild a array 
 static $tmp=array(); 
 
 for($i=0; $i<count($arr); $i++){ 
  if(is_array($arr[$i])){ 
    rebuild_array($arr[$i]); 
  }else{ 
    $tmp[]=$arr[$i]; 
  } 
 } 
 
 return $tmp; 
}

Example:

$arr=array(&#39;123.html&#39;,&#39;456.html&#39;,array(&#39;dw.html&#39;,&#39;fl.html&#39;,array(&#39;ps.html&#39;,&#39;fw.html&#39;)),&#39;ab.html&#39;); 
 
// 定义一个三维数组,用来检测我们的函数 
echo &#39;<pre class="brush:php;toolbar:false">&#39;; 
print_r(rebuild_array($arr)); 
echo &#39;
';

4. Delete blanks from the array Element

function array_remove_empty(&$arr, $trim = true)   
{   
  foreach ($arr as $key => $value) {   
    if (is_array($value)) {   
      array_remove_empty($arr[$key]);   
    } else {   
      $value = trim($value);   
      if ($value == &#39;&#39;) {   
        unset($arr[$key]);   
      } elseif ($trim) {   
        $arr[$key] = $value;   
      }  
    }   
  }   
}

Example:

$a = array(array(3),2,&#39;&#39;,array(&#39;&#39;,23),0); 
 
array_remove_empty($a); 
 
printr($a); // printr 函数请在本文中找

5. Get the value under a specific key under the multi-dimensional array and generate a one-dimensional array

function getall_by_key(array $arr, $key){ 
  if (!trim($key)) return false; 
  preg_match_all("/\"$key\";\w{1}:(?:\d+:|)(.*?);/", serialize($arr), $output); 
  return $output[1]; 
} 
 
$testArr = array(&#39;111&#39;=> 100, &#39;out&#39;=> 200, &#39;333&#39; => array(&#39;out&#39; => 310, array(321, 322, &#39;out&#39; => "this is a test"))); 
 
printr(getall_by_key($testArr, &#39;out&#39;));

Summary: The above is the entire content of this article, I hope it will be helpful to everyone's study.

Related recommendations:

How to set header information in PHP

##Usage of use clause in PHP anonymous function

How to cache php files

The above is the detailed content of Corresponding operations of php on two-dimensional arrays. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn