سؤال

أنا أسحب معلمة عنوان URL وأحاول إنشاء خبز منه. لذا ، إذا سحبت:

$url = 'contact/jane/now';

وأنا كذلك:

$path = explode("/",$url);

كيف يمكنني وضعها في حلقة بحيث تنقسم كل جزء إلى مسار مثل هذا:

<a href="/contact">contact</a>
<a href="/contact/jane">jane</a>
<a href="/contact/jane/now">now</a>
هل كانت مفيدة؟

المحلول

$answer = '';
foreach ($path as $path_part){
 $answer .= '/'.$path_part;
 print('<a href="'.$answer.'">'.$path_part.'</a>');
}

نصائح أخرى

قبل PHP 5.3:

array_reduce($path, create_function('$a, $b', '
    echo "<a href=\"$a/$b\">$b</a>\n";

    return "$a/$b";
'));

في PHP 5.3:

array_reduce($path, function($a, $b) {
    echo "<a href=\"$a/$b\">$b</a>\n";

    return "$a/$b";
});

يمكنك استخدام A for ، لكل ، القيام به ، أثناء ذلك. حقا كل ما تريد.http://php.net/manual/en/control-structures.for.phpعندما ينفجرك يحولها إلى مجموعة من الأوتارhttp://us.php.net/manual/en/function.explode.php

لذا ، ما عليك سوى استخدام طريقة العد () وتحديد عدد العناصر الموجودة في المصفوفةhttp://us.php.net/manual/en/function.count.php

ثم المضي قدما والحلقة من خلال وقراءة واحدة في وقت واحد. إذا كنت ترغب في البدء في آخر مرة ، ثم تعود إلى الوراء ، فأنت ببساطة تغيير حلقة الخاص بك للذهاب إلى تهيئة في عدد المصفوفة ، ثم قم بطرحها في كل مرة من العداد. خلاف ذلك ، فقط افعلها كالمعتاد.

ياي للنظر في DOC PHP!

يمكنك استخدام Array_slice لذلك لم يتم اختبار الرمز حقًا ولكن آمل أن تحصل على الفكرة

...
$url   = explode('/', $url);
$links = array();

for ($i = 0; $i < count($url); $i++) {
    $crumb    = ($i > 0) ? implode('/', array_slice($url, 0, $i)) .'/' : $url[$i] .'/';
    $links[]  = sprintf('<a href="%s">%s</a>', $crumb . $url[$i], $url[$i]);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top