将重复键保留在数组中

时间:2018-04-06 16:20:42

标签: php

我从whois获取数据并打破数据并将其放入带有键的数组中,但有些需要多个键同名,无论如何我可以在相同的命名键的末尾添加数字以使它们唯一?

这是我到目前为止的代码

 $test1 =$check_domain->find_whois_details("be.co");

$rows = explode("\n", $test1);
$arr = array('info'=>"");
foreach($rows as $row) {
    $posOfFirstColon = strpos($row, ":");
    if($posOfFirstColon === FALSE)
        $arr['info'] .= $row;
    else
        $arr[substr($row, 0, $posOfFirstColon)] = trim(substr($row, $posOfFirstColon+1));
}

$a = array_map('trim', array_keys($arr));
$b = array_map('trim', $arr);
$arr = array_combine($a, $b);


print($arr["Registry Expiry Date"]);

2 个答案:

答案 0 :(得分:0)

  

bool array_key_exists(混合$ key,数组$ array)

array_key_exists - 检查数组中是否存在给定的键或索引

<?php
$search_array = array('first' => null, 'second' => 4);

// returns true
array_key_exists('first', $search_array);
?>

使用此功能,您可以检查密钥是否已经存在,在这种情况下,只需在您要插入的密钥后连接一个数字!

答案 1 :(得分:0)

似乎更易于管理的解决方案是将存储结构更改为多维数组而不是平面数组。

class Shape{
    int corners = 0;
}

class Triangle extends Shape{
    int corners = 3;
}

class Square extends Shape{
    int corners = 4;
}

在此结构中,每个名称对应于包含一个或多个值的数组。这样,密钥保留其原始值,如果您向其添加一些任意值以保持其唯一性,则该值将变得不那么有意义。

这可能不适用于您的特定情况,但它通常更适合按特定属性对一组数据进行分组。