PHP assoiative Array与几乎相似的键

时间:2016-07-06 07:21:16

标签: php arrays codeigniter foreach

我有一个关联数组

array(
    'item_name1' => 'PCC',
    'item_name2' => 'ext',
    'item_number1' => '060716113223-13555',
    'item_number2' => '49101220160607-25222)',
)

我想要做的是捕获密钥名称具有相似性的所有数组键

例如,

我想要回显item_name(它应该同时获取item_name1和amp; item_name2),但我需要它在一个循环(foreach / for)中,以便我可以在循环内将详细信息发送到我的数据库中为每组值

谢谢你的帮助

3 个答案:

答案 0 :(得分:1)

使用funtion array_keys

$allKeys = array_keys($yourArray);
$amountKeys = count($allKeys);

除非您不提供更多代码,否则会为您提供$yourArray的所有密钥 Reference - array_keys

要获得所有类似的键,您可以使用此功能similar-text()

由于我不知道密钥是多么“相似”,我建议您测试不同的值并找到符合您期望的学位。

答案 1 :(得分:0)

<?php

$items=[];
$itemsNumbers=[];
foreach($itemarr as $key=> $val)
{
    $itempos = strpos("item_name", $key);
    if ($pos !== false) 
        $items[]=$val;
    $numberpos = strpos("item_number", $key);
    if ($numberpos !== false) 
        $itemsNumbers[]=$val;

}

?>
Note: here $itemarr is your input array

$ item您将获得项目名称列表和$ itemsNumbers,您将获得itemsNumbers列表

答案 2 :(得分:0)

您的数据模型似乎使用数字后缀作为数组的替代,因此我假设键名具有相似性是一个高估的问题陈述,您只想修复它。

显而易见的工具是正则表达式:

foreach ($redacted_data as $k => $v) {
    foreach ($v as $kk => $vv) {
        printf("(%s,%s) = %s\n", $k, $kk, $vv);
    }
}

根据您的确切需求调整应该很容易。

我无法弄清楚我在循环(foreach / for)中的要求是什么意思,但你可以将结果数组循环为任何其他数组:

$('#element').parents().eq(2);
相关问题