当前位置: 首页 > news >正文

php语法--foreach和in_array的使用

文章目录

      • foreach
        • 基础语法:
        • 案例1:
        • 引用传递模式:
        • 嵌套数组处理:
        • 避免在循环中计算数组长度:
        • 使用引用减少内存拷贝:
        • 打印数组
      • in_array
        • 基础使用
        • 严格使用

foreach

基础语法:

foreach ($iterable as $value) {
// 循环体
}

foreach ($iterable as $key => $value) {
// 循环体
}

案例1:
$fruits = ["a" => "Apple", "b" => "Banana", "c" => "Cherry"];foreach ($fruits as $key => $value) {echo "$key: $value\n";
}
输出:
a: Apple
b: Banana
c: Cherry
引用传递模式:
$numbers = [1, 2, 3];foreach ($numbers as &$num) {$num *= 2; // 直接修改原数组
}print_r($numbers); // 输出 [2, 4, 6]// 重要:必须 unset 引用变量
unset($num);
嵌套数组处理:
$matrix = [[1, 2],[3, 4],[5, 6]
];foreach ($matrix as $row) {foreach ($row as $cell) {echo $cell . " ";}echo "\n";
}
// 输出:
// 1 2
// 3 4
// 5 6
避免在循环中计算数组长度:
// 低效(每次循环都计算 count())
for ($i=0; $i<count($array); $i++) { /* ... */ }// 高效(只计算一次)
$length = count($array);
for ($i=0; $i<$length; $i++) { /* ... */ }// 最佳(foreach 自动处理)
foreach ($array as $value) { /* ... */ }
使用引用减少内存拷贝:
$largeArray = range(1, 100000);// 低效(创建值拷贝)
foreach ($largeArray as $value) { /* ... */ }// 高效(直接操作原数据)
foreach ($largeArray as &$value) { /* ... */ }

实战

修改数组结构:

$colors = ['red', 'green', 'blue'];
foreach ($colors as $key => $color) {if ($color === 'green') {unset($colors[$key]); // 危险操作!}
}
// 解决方案:先收集要删除的键
$toDelete = [];
foreach ($colors as $key => $color) {if ($color === 'green') $toDelete[] = $key;
}
foreach ($toDelete as $key) {unset($colors[$key]);
}
打印数组
// 创建 1-10 的连续数组
$numbers = range(1, 10);// 使用 foreach 遍历打印
foreach ($numbers as $number) {//使用`.`操作符连接字符串时,PHP会自动将非字符串的值转换为字符串echo $number . "\n";}输出结果:
1
2
3
4
5
6
7
8
9
10

方法2:

$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];foreach ($numbers as $num) {echo $num . PHP_EOL;  // PHP_EOL 是跨平台的换行符
}

动态生成数组

// 使用循环创建数组
$numbers = [];
for ($i = 1; $i <= 10; $i++) {$numbers[] = $i;  // 将数字添加到数组末尾
}// 打印结果
foreach ($numbers as $index => $value) {echo "索引 {$index} 的值是: {$value}\n";
}
索引 0 的值是: 1
索引 1 的值是: 2
索引 2 的值是: 3
索引 3 的值是: 4
索引 4 的值是: 5
索引 5 的值是: 6
索引 6 的值是: 7
索引 7 的值是: 8
索引 8 的值是: 9
索引 9 的值是: 10

单行打印:

$numbers = range(1, 10);foreach ($numbers as $number) {echo $number . " ";  // 用空格分隔
}// 输出: 1 2 3 4 5 6 7 8 9 10

in_array

bool in_array(mixed $needle, array $haystack [, bool $strict = false])

  • $needle:要搜索的值(任意类型)。

  • $haystack:被搜索的数组。

  • $strict(可选):是否启用严格模式(默认 false)。若为 true,则同时比较值和类型。

  • 返回值:
    找到值返回 true,否则返回 false。

基础使用
$arr = [1, 2, "3", "apple"];var_dump(in_array(2, $arr));      // true(数字2存在)
var_dump(in_array("2", $arr));    // true(字符串"2"被转换为数字2)
var_dump(in_array("apple", $arr)); // true(字符串存在)
var_dump(in_array("banana", $arr));// false
严格使用
$arr = [1, 2, "3", "apple"];var_dump(in_array("2", $arr, true)); // false(类型不同)
var_dump(in_array("3", $arr, true)); // true(值+类型匹配)
var_dump(in_array(3, $arr, true));   // false(数字3 ≠ 字符串"3")
http://www.lryc.cn/news/600027.html

相关文章:

  • 环境变量-进程概念(7)
  • PowerDesigner安装教程(附加安装包)PowerDesigner详细安装教程PowerDesigner 16.6 最新版安装教程
  • 7.文件操作:让程序读写文件 [特殊字符]
  • haproxy七层代理(原理)
  • 【07】C#入门到精通——C# 生成dll库 C#添加现有DLL C#调用自己生成的dll库
  • Typecho多语言解决方案:从插件到主题的完整实现
  • CANoe入门(11)-- 诊断模块
  • SpringBoot学习路径--SpringBoot的简单介绍和项目搭建
  • c++注意点(13)----设计模式(抽象工厂)
  • 医疗器械:DFEMA和PFEMA
  • 从数据脱敏到SHAP解释:用Streamlit+XGBoost构建可复现的川崎病诊断系统
  • [NLP]一个完整的 UPF 文件示例
  • 文心4.5横向对标全球大模型:技术突破与应用前景深度分析
  • OSPF 路由协议多区域
  • 利用Dify实现应用日志关键信息提取之实践
  • 九联UNT413AS_晶晨S905L3S芯片_2+8G_安卓9.0_线刷固件包
  • RK3588 HDMI-RX 驱动、RGA 加速与 OpenCV GStreamer 支持完整指南
  • React性能优化终极指南:memo、useCallback、useMemo全解析
  • 堆(Heap)优先级队列(Priority Queue)
  • python基础:request模块简介与安装、基本使用,如何发送get请求响应数据,response属性与请求头
  • 《计算机组成原理与汇编语言程序设计》实验报告一 基本数字逻辑及汉字显示
  • 机器学习详解(28):LightGBM原理
  • Linux系统编程——进程
  • 腾讯云CodeBuddy+微信小程序:5分钟开发番茄小闹钟
  • IPv6,你开始使用了吗?
  • 学习日志18 python
  • 从入门到进阶:JavaScript 学习之路与实战技巧
  • [科普] 快速傅里叶变换(FFT)和离散傅里叶变换(DFT)的差异
  • JDK8保姆级安装教程
  • 微观低代码