не может получить значение из ассоциативного массива при использовании цикла foreach - PullRequest
0 голосов
/ 27 августа 2018

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

<code>$post_id = 228;

$content_post = get_post($post_id);
$content = $content_post->post_content;

global $wpdb;

$results =$wpdb->get_results("SELECT * FROM wp_article_hyperlinks"); 

foreach ($results as $result){
// $url = $result["url"];
// $title = $result["title"];

    echo '<pre>';
    var_dump($result["title"]);
    echo '
'; } }

Я пытаюсь получить значение заголовка, но приведенное выше просто выводит пустой экран. Когда я запускаю foreach с ключом и значением, все, что я получаю, это int или NULL, когда я использую ключ.

object(stdClass)#717 (4) {
  ["ID"]=>
  string(1) "1"
  ["time"]=>
  string(19) "2018-08-22 12:30:29"
  ["title"]=>
  string(15) "gluteus maximus"
  ["url"]=>
  string(86) "/wp-content/blahblah"
}

Я сравнил его с другими кодами / постами в SO и W3Schools, и я почти уверен, что все, что я пропускаю, довольно просто, но я не вижу этого.

Ответы [ 3 ]

0 голосов
/ 27 августа 2018

Это объект stdClass, и вы пытаетесь получить к нему доступ как к массиву, поэтому.

попробуйте получить доступ к нему как $result->title.

Если для вас важно иметь формат массива, вы можете преобразовать stdClass в массив с помощью

$data=json_decode(json_encode($result,true),true);

Это предоставит вам массив ваших данных, которые вы можете использовать обычными методами, которые вы знаете, чтобы получить к ним доступ.

0 голосов
/ 27 августа 2018

Вы видите, что ваша функция var_dump показывает, что $result является stdClass() объектом.

Это означает, что если вы хотите получить значение этого объекта, вам нужно использовать $result->title вместо $result['title']

Вы также можете проверить wpdb :: get_results () раздел документации WordPress.

Вы обнаружите, что метод get_results() имеет второй ($output) аргумент, который показывает, как результат вернется к вам.

Например:

$results = $wpdb->get_results("SELECT * FROM wp_article_hyperlinks", ARRAY_A);
foreach ($results as $result) {
    // $result['title'] - You can get title value from an associative array
}

$results = $wpdb->get_results("SELECT * FROM wp_article_hyperlinks", ARRAY_N);
foreach ($results as $result) {
    // $result[2] - You can get title value from an numeric array
}
0 голосов
/ 27 августа 2018

Попробуйте использовать приведенный ниже код для решения:

<code>$post_id = 228;

$content_post = get_post($post_id);
$content = $content_post->post_content;

global $wpdb;

$results =$wpdb->get_results("SELECT * FROM wp_article_hyperlinks"); 

foreach ($results as $result){
// $url = $result["url"];
// $title = $result["title"];

    echo '<pre>';
    var_dump($result->title);
    echo '
'; }
...