PHP 如何根据指定键的值排序二维数组?

PHP ,
答案 使用PHP内置usort函数实现,这里实现正向的自然排序,其他排序方式略作修改即可。 function sort2DArray($arr, $column) { usort($arr, function($a, $b) use ($column) { return strnatcmp($a[$column], $b[$column]); }); return $arr; } 解析 测试代码: $arr = array( array('id…

PHP 实现多维数组值变成首字母大写

PHP ,
答案 使用内置函数array_walk_recursive()实现,注意,匿名函数参数$value我们使用引用传参方式,就地修改元素值。 function upperArrayFirstWord($arr) { array_walk_recursive($arr, function(&$value, $key) { $value = ucfirst($value); }); return $arr; }

如何像访问数组一样访问PHP类/对象?

PHP ,
答案 让类实现PHP的ArrayAccess(数组式访问)接口。 解析 例如: class myClass implements ArrayAccess { private $container = array(); public function __construct() { $this->container = array( "one" => 1, "two" => 2, "three" => 3, );…

查找两个有序数组的相同元素PHP版

PHP , ,
答案 function findArrayCommon($arr1, $arr2) { $common = array(); $i = 0; $j = 0; $count1 = count($arr1); $count2 = count($arr2); while ($i < $count1 && $j < $count2) { if ($arr1[$i] < $arr2[$j]) { $i++; } elseif ($arr1[$i] > $arr2[$j]) { $j++; } else …

反转数组PHP版

PHP , ,
答案 function reverseArray($arr) { $n = count($arr); $left = 0; $right = $n - 1; while ($left < $right) { $temp = $arr[$left]; $arr[$left++] = $arr[$right]; $arr[$right--] = $temp; } return $arr; } 测试代码: $arr = [11, 22, 33, 44, 55, 66, 77]; // 输出:[77,66,55,44,…

PHP数组合并+和array_merge()有什么区别?

PHP ,
答案 | | + | array_merge() | |-----------+------------+-----------------| | 数字索引 | 取前弃后 | 附加到后面 | |-----------+------------+-----------------| | 字符串索引 | 取前弃后 | 后覆盖前 | |-----------+------------+-----------------| 解析 array_merge(): 如果输入的数…

找出数组中不重复的值PHP版

PHP ,
答案 用 hash/桶 的思路 $res = []; foreach ($data as $item) { if(array_key_exists($item, $res)) { ++$res[$item]; } else { $res[$item] = 1; } } foreach ($res as $k => $v) { if($v == 1) { echo $k; } } 这个算法的时间复杂度是:O(n)。 O(n+m) => O(n)

数组和hash表的区别是什么?

答案 数组是编程语言提供的一种数据类型,即用一组连续的内存空间来存放数据,可以通过一个首地址,和一个数组下标,直接访问这组内存空间中的任意位置。 哈希表是数据结构这门学科中的概念,是以数组为存储方式,实现的一种可以快速查找数据的数据结构。它是将数据的值通过一个映射函数(也…

PHP数组内置的排序方法有哪些?

PHP ,
答案 sort($array); // 数组升序排序 rsort($array); // 数组降序排序 asort($array); // 根据值,以升序对关联数组进行排序 ksort($array); // 根据键,以升序对关联数组进行排序 arsort($array); // 根据值,以降序对关联数组进行排序 krsort($array); // 根据键,以降序对关联数组进行排序