PHP: цикл foreach слишком много раз - PullRequest
1 голос
/ 13 июня 2011

get_tag_id возвращает первый элемент массива дважды, если я ввожу следующее:

текстура, клиенты

Я получаю это возвращение:

Array
(
    [0] => texture
    [1] => clients
)
Array
(
    [0] => stdClass Object
        (
            [TagID] => 4
            [Title] => texture
        )

)
Array
(
    [0] => stdClass Object
        (
            [TagID] => 4
            [Title] => texture
        )

)
Array
(
    [0] => stdClass Object
        (
            [TagID] => 1
            [Title] => clients
        )

)
Array
(
    [0] => texture
    [1] => clients
)

Ниже приведен код:

        // Break up Tags and Store in an Array
        $delimiter = " ";
        $tags = explode($delimiter, $this->input->post('tags'));

        // Remove Accidential Spaces if any.
        $tags = array_filter($tags, function($var){
             return preg_match('/^[a-z-]+$/i', $var);
        });

        // Create Arrays for Seperation
        $newTags = array();
        $currentTags = array();
        print_r($tags);

        // Check if Tags Exists
        foreach ($tags as $tag) 
        {
            if (!$this->Bookmark_model->tag_exists($tag))
            {
                array_push($currentTags, strtolower($tag));
                // Get ID of tags that are existing
                foreach ($currentTags as $tagname) 
                {
                    $id = $this->Bookmark_model->get_tag_id($tagname);
                    echo $id;
                }
            }
            else
            {
                array_push($newTags, strtolower($tag));
            }
        }

get_tag_id () код:

function get_tag_id($tag)
{
    // Load Database
    $this->load->database();
    // Query Database
    $this->db->where_in('Title', $tag);
        $query = $this->db->get('Tag', 1);
        $result = $query->result();
        // Return ID of Tag
        //return $result[0]->TagID;
        print_r($result);
}

1 Ответ

0 голосов
/ 13 июня 2011

Это из-за этого кода прямо здесь:

            array_push($currentTags, strtolower($tag));
            // Get ID of tags that are existing
            foreach ($currentTags as $tagname) 
            {
                $id = $this->Bookmark_model->get_tag_id($tagname);
                echo $id;
            }

Удалите foreach и он больше не будет печатать первый массив дважды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...