php 循环匹配数组,PHP中的通配符数组循环

这篇博客介绍了如何在PHP中遍历数组并只处理以'default_'开头的键。提供了多种方法,包括使用strpos()函数检查键名、结合array_filter()和array_flip()函数,以及创建自定义的FilterIterator子类。这些方法可以有效地筛选出匹配的键并进行后续操作。
摘要由CSDN通过智能技术生成

我有一个包含大量数据的数组,这些数据是从JSON文件生成的.大多数数据用于填充输入元素,但某些键包含隐藏的默认值,以便稍后用于计算.

该数组看起来像这样:

[name] => 'My App'

[default_E17] => 0.009

[default_H17] => 0.0236

[default_K17] => 50

[default_P17] => 0.0118

[default_E19] => 0.03

我想遍历所有default_ *键,并使用HTML输出它们.本质上,我想要一个foreach循环,但仅适用于格式与default_ *匹配的密钥.有谁知道这是否可能?

请注意,[default_ *]键之前的数组中的值是可变长度的,所以我不能轻易使用array_splice().

解决方法:

你使用strpos($key,“default_”)=== 0来表明它以default_开头,而不是在中间或结尾

$array = array();

$array['name'] = 'My App';

$array['default_E17'] = "0.009";

$array['default_H17'] = "0.0236";

$array['default_K17'] = "50";

$array['default_P17'] = "0.0118";

$array['default_E19'] = "0.03";

$array['E19_default_test'] = "1.03";

echo "

";

*你可以使用foreach *

$list = array();

foreach ( $array as $key => $value ) {

if (strpos($key, "default_") === 0) {

$list[$key] = $value;

}

}

var_dump($list);

您还可以将array_flip与array_filter一起使用

$array = array_flip(array_filter(array_flip($array),function($var) { return (strpos($var, "default_") === 0);}));

var_dump($array);

您也可以使用FilterIterator

class RemoveDefaultIterator extends FilterIterator {

public function accept() {

return (strpos($this->key(), "default_") === 0);

}

}

$list = new RemoveDefaultIterator(new ArrayIterator($array));

var_dump(iterator_to_array($list));

他们都会输出

array

'default_E17' => string '0.009' (length=5)

'default_H17' => string '0.0236' (length=6)

'default_K17' => string '50' (length=2)

'default_P17' => string '0.0118' (length=6)

'default_E19' => string '0.03' (length=4)

标签:php,arrays

来源: https://codeday.me/bug/20190713/1450594.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值