PHP数组中,如何查询所有等于指定值得元素下标?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP数组中,如何查询所有等于指定值得元素下标?相关的知识,希望对你有一定的参考价值。
php+mysql环境:
16个字段,分成两组,分别是Gs1-8,Mc1-8。把其中Gs1-8转换成数组$GsArray。如果$Mc1=1,就取出Gs1的值,假设Gs1的值=“南京”,在$GsArray中遍历,取出所有元素等于南京的下标,假设获得的下标为[1],[2],[5],[8],就把Mc1,Mc2,Mc5,Mc8在数据中的值都变成1.
将trans中的所有元素变为下标,对应的原先的key(下标)变为值
适用于关联数组(索引数组没测试过)
比如
$a = array(
\'name\'=>\'ansuir\',
\'pet\'=>\'cat\'
);
经过转换后得到的新数组
$b = array_flip($a);
/*
$b=array(
\'ansuir\'=>\'name\',
\'cat\'=>\'pet\'
);
*/
这样,就可以通过$b[\'ansuir\'] 得到 \'name\'了,也就是原先在$a 中的对应下标
这个函数多用于去重数组值,两次翻转之后可以将重复的数组元素去除 参考技术A 你说的这个可不是查找重复元素,而是查找存在元素值部分内容相同的所有元素。没有简单方法。 你只能使用循环,一个一个的把元素的值打散,一次又一次的与其他的每一个元素比较。
PHP 零基础入门笔记(12):数组 array
数组 array
数组的概念
数据的组合,将一组数据存储到一个指定的容器中,用变量指向该容器。
可以通过变量一次性得到该容器中的所有数据
数组的定义
// 1、使用array关键字
$变量 = array(元素1, 元素2, ...);
// 2、使用中括号
$变量 = [元素1, 元素2, ...];
// 3、隐形定义数组
$变量[] = 值1; // 默认下标是数字,默认从0开始
$变量[下标] = 值; // 下标或者key,可以是数字或字符串
// 下标自动为前面最大+1
示例
// 方式一:
$arr = array(Tom, Jack, Steve);
// 方式二:
$arr = [Tom, Jack, Steve];
// 方式三:
$arr[] = Tom;
$arr[] = Jack;
$arr[] = Steve;
// 输出结果一样
var_dump($arr);
// array(3)
// [0]=> string(3) "Tom"
// [1]=> string(4) "Jack"
// [2]=> string(5) "Steve"
//
PHP 数组特点
1、可以整数下标或者字符串下标
- 索引数组:数组下标为整数
- 关联数组:数组下标为字符串
- 混合数组:不同下标可以混合存在
2、数组元素的顺序以放入顺序为准,跟下标无关
3、数字下标的自增长特性
4、特殊值下标的自动转换
<?php
$arr[false] = Tom;
$arr[true] = Jack;
$arr[null] = Steve;
var_dump($arr);
// array(3)
// [0] => string(3) "Tom"
// [1] => string(4) "Jack"
// [""]=> string(5) "Steve"
//
5、PHP 数组元素没有类型限制
6、PHP 数组元素没有长度限制
多维数组
多维数组:数组里的元素又是数组
1、二维数组: 数组中的所有元素都是一维数组
<?php
$arr = [
[
name=> Tom,
age=> 23
],
[
name=> Jack,
age=> 24
],
];
var_dump($arr);
// array(2)
// [0]=> array(2)
// ["name"] => string(3) "Tom"
// ["age"] => int(23)
//
// [1]=> array(2)
// ["name"] => string(4) "Jack"
// ["age"] => int(24)
//
//
2、多维数组:二维数组中的元素可以继续是数组
不建议超过三维以上的数组
3、异型数组(不规则数组)
数组的中的元素不规则,有普通基本变量也有数组
数组遍历
普通数组可以通过下标来访问
<?php
$arr = [
[
name=> Tom,
age => 23
],
[
name=> Jack,
age => 24
],
];
// 访问一维
var_dump($arr[0]);
// array(2)
// ["name"] => string(3) "Tom"
// ["age"] => int(23)
//
// 访问二维
var_dump($arr[0][name]);
// string(3) "Tom"
1、Foreach 语法
foreach($数组 as [$key =>] $value)
// key下标 value值
示例
<?php
$arr = [
[
name=> Tom,
age => 23
],
[
name=> Jack,
age => 24
],
];
foreach($arr as $index => $item)
echo $index, $item[name], $item[age] . PHP_EOL;
// 0Tom23
// 1Jack24
2、foreach 遍历原理
本质是数组内部有一个指针,默认指向数组元素的第一个元素
foreach 就是利用指针取获取数据,同时移动指针
- foreach 会重置指针,让指针指向第一个元素
- 进入 foreach 循环,通过指针获取元素
- 进入循环体执行
- 重复此过程,直到取不到元素
3、for 循环遍历数组
获取数组长度 count()
要求数组元素下标有规律
<?php
$arr = [Tom, Jack, Steve];
for($i =0, $len =count($arr); $i < $len; $i ++)
echo [ . $i . ] . $arr[$i] . PHP_EOL;
// [0] Tom
// [1] Jack
// [2] Steve
4、while 循环
<?php
$arr = [Tom, Jack, Steve];
$i =0;
$len =count($arr);
while($i < $len)
echo [ . $i . ] . $arr[$i] . PHP_EOL;
$i ++;
// [0] Tom
// [1] Jack
// [2] Steve
4、each (7 版本以后已弃用)
$arr = [Tom, Jack, Steve];
// 通过each移动数组指针下移
while($item = each($arr))
var_dump($item);
// array(4)
// [0] => int(0)
// [1] => string(3) "Tom"
// ["key"] => int(0)
// ["value"] => string(3) "Tom"
//
5、list 按照下标取值
<?php
$arr = [Tom, Jack, Steve];
list($name1, $name2) = $arr;
var_dump($name1, $name2);
// string(3) "Tom"
// string(4) "Jack"
6、while + each + list 配合
<?php
$arr = [Tom, Jack, Steve];
// 通过each移动数组指针下移
while(list($key, $value) = each($arr))
echo [ . $key . ] . $value . PHP_EOL;
// [0] Tom
// [1] Jack
// [2] Steve
以上是关于PHP数组中,如何查询所有等于指定值得元素下标?的主要内容,如果未能解决你的问题,请参考以下文章
C语言试题四十四之移动一维数组中的内容,若数组中由n个整数,要求把下标从0到p(p小于等于n-1)的数组元素平移到数组的最后。
C语言试题四十四之移动一维数组中的内容,若数组中由n个整数,要求把下标从0到p(p小于等于n-1)的数组元素平移到数组的最后。