Цикл по массиву массивов / объектов - PullRequest
0 голосов
/ 23 октября 2011

У меня есть нечто похожее на следующую структуру:

Array
(
    [wp_postmeta] => Array
    (
        [0] => stdClass Object
            (
                [meta_id] => 1
                [post_id] => 2
                [meta_key] => _wp_page_template
                [meta_value] => default
            )

    )

    [wp_comments] => Array
    (
        [0] => stdClass Object
            (
                [comment_ID] => 1
                [comment_post_ID] => 1
                [comment_author] => Mr WordPress
                [comment_author_email] => 
                [comment_author_url] => http://wordpress.org/
                [comment_author_IP] => 
                [comment_date] => 2011-10-20 03:06:23
                [comment_date_gmt] => 2011-10-20 03:06:23
                [comment_content] => Hi, this is a comment.
                [comment_karma] => 0
                [comment_approved] => 1
                [comment_agent] => 
                [comment_type] => 
                [comment_parent] => 0
                [user_id] => 0
            )

    )
)

Здесь я пытаюсь выполнить итерации по этим результатам, чтобы я мог использовать их для формирования запроса.

Предположим, что все данные в таблице wp_postmeta удалены из базы данных, и этот массив содержит данные этой таблицы до ее удаления.Я хочу взять эти сохраненные данные в массив и сбросить таблицу с этими старыми значениями.

Т.е. перебираем массив и вставляем его как sql: INSERT INTO wp_postmeta (meta_id, post_id, meta_key, meta_value) VALUES (1, 2, «_wp_page_template», «default»)

1 Ответ

1 голос
/ 23 октября 2011
foreach ($outerArray as $tableName => $tableData) { // Loop outer array
  foreach ($tableData as $row) { // Loop table rows
    $cols = $vals = array();
    foreach ($row as $col => $val) { // Loop this row
      $cols[] = $col;
      $vals[] = $val; // You may need to escape this before using it in a query...
    }
    // Build the query
    $query = "INSERT INTO $tableName (".implode(', ',$cols).") VALUES ('".implode("', '",$vals)."')";
    // Do the query here
  }
}

Вы можете перебирать свойства объекта точно так же, как вы можете с массивом, а в stdClass все общедоступно, поэтому вышеприведенное не должно работать без проблем.

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