php利用array_search与array_column实现二维数组查找

在看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);

 ?>

转自:https://blog.csdn.net/weixin_37618596/article/details/80354902

原文地址:https://www.cnblogs.com/liujie-php/p/9712538.html

时间: 2024-08-13 13:06:45

php利用array_search与array_column实现二维数组查找的相关文章

offer 二维数组查找

二维数组查找: (1)C语言实现方式: 测试用例:int AA[16]={1,2,8,9,2,4,9,12,4,7,10,13,6,8,11,15}; bool Find1(int * target, int rows,int colums,int number) //输入的行数和列数 { int row=0, colum=colums-1; //实时变化的 /下标 if (target==NULL||rows<=0||colums<=0)//保持 { return false; } whil

二维数组查找

问题描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 特点:如下图,基本上是一个m*n的矩阵,排列顺序如题目描述的一样 思路:从右上角的数开始查找,对于右上角的数来说,他的左侧的数比自己小,下方的数比自己大,如图:将待查找的数据与右上方的数比较时,如果比9小,查再查找9左边的数,如果比9大,则继续查找9下方的数,依次继续比较,知道找到或者x>=矩阵行数或者y<0,换句话说

二维数组查找元素

简介 数组是一种比较简单的数据结构,它占据一块连续的内存并按照顺序存储数据.在创建时,需要先指定数组的容量大小,然后根据大小分配内存.因此数组的空间效率不是很好,经常会有空闲的区域没有充分利用.由于数组内存是连续的,所以可以用下标访问元素,时间效率比较高. 题目 在一个二维数组中,每一行都是按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排列,完成一个函数,输入这样一个二维数组和一个整数,判断数组中是否含有该整数 1 2 8  9 2 4 9  12 4 7 10 13 6 8 11

C++二维数组查找题

题目:在一个二维数组中,每一行都按照从左到右递增的顺序,每一列都按照从上到下递增的顺序排序,完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否有该函数. 如二维数组: 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15 查找数字7,存在返回true:查找数字5,不存在,返回false: 处理方法: 从最右上角的数字开始,如果查找数小于该数,则查找数一定位于该数左侧,排除该列,继续查找左侧剩下的矩阵: 如果查找数大于该数,则查找数一定位于该数下侧,排除该行,继续查

二维数组查找——剑指offer

题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序,请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否有该整数. 1 #include <stdio.h> 2 #include<stdbool.h> 3 int main() 4 { 5 int find(int matrix[4][4], int rows, int columns, int number); 6 int a[4][4] = {{ 1, 2, 8, 9 },

《剑指Offer》算法题——二维数组查找

题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. class Solution { public: bool Find(vector<vector<int> > array, int target) { int col = array.size(); int i = 0; while (i < col) { int j = array[i].size()

剑指offer整理-------二维数组查找

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 1 public boolean Find(int target, int[][] matrix) { 2 3 int row = 0; 4 int col = matrix[0].length - 1; 5 /*从二维数组的右上角开始寻找,因为每一行的最右侧为最大 6 值,先从每一行找,找不到则换行,此

【剑指offer】规则二维数组查找

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 思路:从数组左下角开始判断,如果目标数据大于左下角数字,则列号右移(增加),若目标数字小于左下角数字,则行号上移(减小) public class Solution {     public boolean Find(int target, int [][] array) {         int ro

行列有序的二维数组查找

描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序. 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 输入描述: array: 待查找的二维数组 target:查找的数字 输出描述: 查找到返回true,查找不到返回false 解析 分冶法 这种行和列分别递增的矩阵,有一个专有名词叫做杨氏矩阵,由剑桥大学数学家杨表在1900年推提出,在这个矩阵中的查找,俗称杨氏矩阵查找.以查找数字6为例,因为矩阵的行和列都是递增的,所以整