0

我有一个数组,让我们说,$breadcrumb = array("home" , "groups", "Create content", "some other element" "so on");我想检查它是否包含字符串“创建内容”,然后取消设置字符串,但我的问题是“创建内容”是一个链接(锚定)而不仅仅是一个普通字符串,我试过in_array()了,但没有成功。我如何寻找它,使其更清楚?

这是我的代码:

<?php
function phptemplate_breadcrumb($breadcrumb) {
    if (!empty($breadcrumb)) {
        if(in_array("Create content",$breadcrumb)){
            foreach($breadcrumb as $key => $value){
                if("Create content" == strip_tags($value)){
                    unset($breadcrumb[$key]);
                }
            }
        }
    }
    return '<div class="breadcrumb">'. implode(' › ', $breadcrumb) .'</div>';
}

注意:我知道如果我省略它无论如何都可以完成in_array()检查,无论如何都可以完成,但如果 不在数组中,我不想不必要地循环遍历'Create content'数组。

编辑:实际数组是:

array(
[0]=>home
[1]=> groups
[2]=> my group
[3]=> Create content
 )

这里'Create content'可以占据任何位置。注意:所有元素都是链接(锚定)。

4

1 回答 1

0

If your real array is something like

array(
    [0]=> <a href="/">home</a>
    [1]=> <a href="/path/">groups</a>
    [2]=> <a href="/subpath/">my group</a>
    [3]=> <a href="/another/path/">Create content</a>
)

then you can try to use preg-grep so as to return all items that match your regExp pattern:

$content_links = preg_grep("/[YOUR REGEXP HERE]/", $breadcrumb);
// if you have matching items
if (0 < sizeof($content_links)) {
    // do some stuff - do `foreach` loop or use `array_diff`
}

UPD: Or even you can use PREG_GREP_INVERT as third parameter and get all items that doens't match RegExp pattern.

于 2013-06-24T18:12:17.897 回答