簡體   English   中英

遞歸array_search?

[英]Recursive array_search?

我有以下數組:

(
    [https://i.imgur.com/vyGHgZN.jpg] => dummy2
    [https://i.imgur.com/UYK4Agz.png] => dummy
    [https://i.imgur.com/xEXdKYn.jpg] => dummy
)

[key]是圖像鏈接,而=> dummy2是我網站上的圖像位置。

使用以下功能,我刪除了所有鏈接和重復項。

$unique=array_unique(array_values($img_array));

它返回以下數組:

(
    [0] => dummy2
    [1] => dummy
)

現在,我想生成以下數組:

(
    [dummy]
    (
       [0] => https://i.imgur.com/UYK4Agz.png
       [1] => https://i.imgur.com/xEXdKYn.jpg
    )

    [dummy2]
    (
       [0] => https://i.imgur.com/vyGHgZN.jpg
    )
)

因此,我使用以下函數來獲取每個類別的鏈接:

foreach($unique as $value){
    print_r(array_search($value,$img_array));
}

返回以下內容:

https://i.imgur.com/vyGHgZN.jpghttps://i.imgur.com/vyGHgZN.jpg

但是正如您所看到的,它缺少一個鏈接...看來array_search不是遞歸的!

嘗試了許多, 許多功能,包括,顯然,遞歸的,但他們都返回任何結果,在我的情況。

有任何想法嗎?

只需循環數組並使鍵值和值成為鍵:

$arr = array(
    "https://i.imgur.com/vyGHgZN.jpg" => "dummy2",
    "https://i.imgur.com/UYK4Agz.png" => "dummy",
    "https://i.imgur.com/xEXdKYn.jpg" => "dummy"
);

foreach($arr as $key => $val){
    $res[$val][] = $key;
}

var_dump($res);

輸出:

array(2) {
  ["dummy2"]=>
  array(1) {
    [0]=>
    string(31) "https://i.imgur.com/vyGHgZN.jpg"
  }
  ["dummy"]=>
  array(2) {
    [0]=>
    string(31) "https://i.imgur.com/UYK4Agz.png"
    [1]=>
    string(31) "https://i.imgur.com/xEXdKYn.jpg"
  }
}

https://3v4l.org/0E9Vm

簡單的foreach循環就可以了,

$result = [];
foreach ($arr as $key => $value) {
    $result[$value][] = $key; // grouping array as per value as key
}
print_r($result);

演示

輸出: -

Array
(
    [dummy2] => Array
        (
            [0] => https://i.imgur.com/vyGHgZN.jpg
        )

    [dummy] => Array
        (
            [0] => https://i.imgur.com/UYK4Agz.png
            [1] => https://i.imgur.com/xEXdKYn.jpg
        )

)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM