混合使用祖先元件阵列

问题描述 投票:0回答:2

似乎很简单,但我很喜欢,失去了很多时间在这...并没有成功...

如果我有一个字符串:

$str = "She sells seashells"

所以,我把每个单词都成为一个数组元素

$array = explode(" ", $str);

我需要的是,每一个字接收祖先元素(如果有的话),并在未来的...

实施例结果JSON格式(更容易证明)

"{"She":["sells","seashells"],"sells":["She","seashells"],"seashells":["She","sells"]}"

谁能帮助?

谢谢!

php arrays
2个回答
5
投票

真的,你可以复制源阵列的每个键,不包括关键:

$str = "She sells seashells";
$array = explode(" ", $str);

$res = [];
for($i = 0; $i < count($array); $i++) {
    $res[$array[$i]] = $array;
    unset($res[$array[$i]][$i]);
}

print_r($res);

demo


3
投票
<?php

$str = "She sells seashells";

$arr = explode(" ",$str);
$length = count($arr);
$result = [];

for($i = 0;$i < $length;++$i){
    $result[$arr[$i]] = [];
    foreach ($arr as $each_val) {
        if($each_val === $arr[$i]) continue;
        $result[$arr[$i]][] = $each_val;
    }
}

echo json_encode($result);

OUTPUT:

{"She":["sells","seashells"],"sells":["She","seashells"],"seashells":["She","sells"]}
  • 爆炸基于空间的字符串。
  • result阵列,并在for循环作为它的关键当前迭代值。
  • 循环再次在阵列上,并检查是否当前值与外for循环值匹配。如果是,则继续,否则在此result数组键添加值。
  • 最后,json_encode()它和你做。
© www.soinside.com 2019 - 2024. All rights reserved.