Php 将数组与祖先元素混合使用

Php 将数组与祖先元素混合使用,php,arrays,Php,Arrays,看起来很简单,但我想,在这件事上浪费了很多时间。。。没有成功 如果我有一个字符串: $str = "She sells seashells" 所以我把每个单词都转换成一个数组元素 $array = explode(" ", $str); 我需要的是,每个单词都接收祖先元素(如果有的话)和下一个 json格式的示例结果更易于显示 "{"She":["sells","seashells"],"sells":["She","seashells"],"seashells":["She","sells

看起来很简单,但我想,在这件事上浪费了很多时间。。。没有成功

如果我有一个字符串:

$str = "She sells seashells"
所以我把每个单词都转换成一个数组元素

$array = explode(" ", $str);
我需要的是,每个单词都接收祖先元素(如果有的话)和下一个

json格式的示例结果更易于显示

"{"She":["sells","seashells"],"sells":["She","seashells"],"seashells":["She","sells"]}"
有人能帮忙吗


谢谢

实际上,您可以为每个键复制一个源数组,不包括该键:

$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);
基于空格分解字符串。 拥有一个结果数组,并将for循环中的当前迭代值作为它的键。 在数组上再次循环,并检查当前值是否与外部for循环值匹配。如果是,则继续,否则将该值添加到此结果数组键中。 最后,它和你都完成了。
这个例子似乎模棱两可。你刚才说的“祖先”是什么意思?仍然无法解释为什么最后一个条目应该是海贝:[她,销售]这是如何用三个以上的词来表达的?哈哈,太棒了!非常感谢!!:杜松特是impressive@jbyrd你能举个例子吗?OP没有提到任何关于双重性的东西,但如果有问题,我会解决它。你是对的——在更仔细地阅读代码并测试它之后,它确实起作用了。向上投票。@jbyrd谢谢。干杯:
<?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);
{"She":["sells","seashells"],"sells":["She","seashells"],"seashells":["She","sells"]}