позиция next () и prev () с функцией массива Переполнение стека

У меня есть код ниже,

<?php
$people = array("patrick", "wumbo", "wambo", "Peter", "Joe", "Glenn", "Cleveland");

echo current($people) . "<br>";
echo next($people) . "<br>";
echo prev($people);
?>

мой вопрос: если я хочу, чтобы текущая позиция была «Джо», как показать мою всю предыдущую позицию и мою следующую позицию?

выход:

my prev = *patrick wumbo wambo Peter*

my next = *Glenn Cleveland*

обновить вопрос

<?php
$a = "My brother see the moon";
$b = explode(" ",preg_replace("/(\.|\"|,|;|\(|\)|'|)+?/i","",$a));
for($ulangKata=0;$ulangKata<count($b);$ulangKata++)
{
$huruf_kecil = strtolower($a);
$fungsi_replace = preg_replace("/(\.|\"|,|;|\(|\)|'|)+?/i","",$huruf_kecil);
$pecah_untuk_kata = explode(" ",$fungsi_replace);
$pecah_kata = $pecah_untuk_kata[$ulangKata];
echo "kata ke - ".$ulangKata." ".$b[$ulangKata]."<br>";
}
echo "<br>";
for($ulangKata=0;$ulangKata<count($b);$ulangKata++)
{
echo $b[$ulangKata]."<br>";
}
?>

и я хочу увидеть вывод, как

Subject : My brother
Predicate : see
Object : the moon

Я уже пытался, но понятия не имею с прошлой ночи.

3

Решение

сделать это легко с помощью array_slice

$key=array_search("Joe",$people);
echo "Current:".$people[$key] . "\n" .
"Prev:".implode(",", array_slice($people, 0, $key)) . "\n" .
"Next:".implode(",", array_slice($people, $key+1));
1

Другие решения

Что-то вроде этого?

    $current= "Joe";

$people = array("patrick", "wumbo", "wambo", "Peter", "Joe", "Glenn", "Cleveland");
$pos    = array_search($current, $people);

foreach($people as $key => $value) {

if($key < $pos) {

$prev[] = $value;

} elseif($key > $pos) {

$next[] = $value;

}

}

foreach($prev as $item) {
echo "$item ";
}
echo "<br />";
foreach($next as $item) {
echo "$item ";
}

Выход:

patrick wumbo wambo Peter
Glenn Cleveland

ОБНОВЛЕНИЕ 2

<?php

function getSubObj($string, $verb) {

$parts  = explode(" ", $string);
$pos    = array_search($verb, $parts);

foreach($parts as $key => $value) {

if($key < $pos) {

$subjects[] = $value;

} elseif($key > $pos) {

$objects[]  = $value;

}

}

return array($subjects, $objects);

}

list($subjects, $objects) = getSubObj("Brother see the moon", "see");

echo "<h2>Subjects</h2>";
foreach($subjects as $item) {
echo "$item ";
}

echo "<h2>Objects</h2>";
foreach($objects as $item) {
echo "$item ";
}


?>

Выход:

введите описание изображения здесь

1

Попробуй это…

<?php
$people = array("patrick", "wumbo", "wambo", "Peter", "Joe", "Glenn", "Cleveland");


$key=array_search("Joe",$people);
$next=array();
$prev=array();
for($i=$key+1;$i<count($people);$i++)
{
$next[]=$people[$i];
}

for($i=$key-1;$i >0;$i--)
{
$prev[]=$people[$i];
}

echo "Current:".$people[$key];
echo "</br>";
echo "Next:".implode(",",$next);
echo "</br>";
echo "prev:".implode(",",$prev);
?>

Результат:

Current:Joe
Next:Glenn,Cleveland
prev:Peter,wambo wumbo
0

Спасибо всем за вашу поддержку,

Хм, если у меня есть строка, как показано ниже

$text = "Brother see the moon";

Я подписываю свой код, который «видят» как глагол,

весь массив перед «видеть» как предмет

и весь массив после «вижу» как объект

0
По вопросам рекламы [email protected]