【问题标题】:next() and prev() position with array function phpnext() 和 prev() 位置与数组函数 php
【发布时间】:2015-10-26 16:17:07
【问题描述】:

我在下面有一个代码,

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

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

我的问题是如果我想要当前位置是“joe”,如何显示我之前的所有位置和我的所有下一个位置?

输出:

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

我已经尝试过了,但从昨晚开始就不知道了。

【问题讨论】:

    标签: php arrays next


    【解决方案1】:

    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));
    

    【讨论】:

    • 感谢 splash58 帮助我,我会再次通知您在我的代码中应用上述内容。
    【解决方案2】:

    这样的?

        $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 ";
            }
    
    
    ?>
    

    输出:

    【讨论】:

    • 谢谢 Emil,但是我可以在没有 print_r 的情况下显示数组吗?就像回声一样。
    • 是的,它对我有用,我对我的代码有疑问,$text="Brother See the moon";我可以使用上面的代码吗?
    • 嗨,Emil,我可以用 for 循环引爆“Brother see the moon”吗?
    • 嗨!为什么要使用 for 循环?就像我的例子一样使用explode()。
    • 更新您的问题并解释您的问题。
    【解决方案3】:

    试试这个...

    <?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
    

    【讨论】:

    • 感谢Deena的指导,我的代码很复杂,但我只能这样解释代码,希望对我有所帮助。我会马上回来再次通知您我的结果。问候
    • 嗨,Deena,我有一个问题,嗯,如果我有一个类似的字符串,$text = "Brother see the moon";我签署了我的代码,将“see”作为动词,“see”之前的所有数组作为主语,“see”之后的所有数组作为对象如何在我的代码中使用 next() 和 prev()?
    【解决方案4】:

    感谢大家的支持,

    嗯,如果我有一个像下面这样的字符串

    $text = "Brother see the moon";
    

    我签署了“看到”为动词的代码,

    “看到”之前的所有数组为主题

    以及“看到”之后的所有数组为object

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-19
      • 2023-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多