Home > database >  How do I read an array key of an associative array?
How do I read an array key of an associative array?

Time:11-09

This is what I'm doing:

$content = array(get_post_meta($postId, 'content'));
$media = array(get_post_meta($postId, 'media'));
$yt = array(get_post_meta($postId, 'youtube'));
$max = max(count($content), count($media), count($yt));
$combined = [];
for($i = 0; $i <= $max; $i  ) {
    if(isset($content[$i])) {
        $combined[] = ["type" => "content", "value" => $content[$i]];
    }
    if(isset($media[$i])) {
        $combined[] = ["type" => "media", "value" => $media[$i]];
    }
    if(isset($yt[$i])) {
        $combined[] = ["type" => "youtube", "value" => $yt[$i]];
    }
}
foreach ($combined as $key => $val) {
    echo '<li>'.$val['value'].'</li>';
}

The result is:

Array
Array
Array

I'd expect:

media value
content value
youtube value

CodePudding user response:

You are working with array of arrays because get_post_meta returns by default an array, unless the 3rd parameter $single is true.

So try

$content = array(get_post_meta($postId, 'content', true));

or actually just

$content = get_post_meta($postId, 'content');

CodePudding user response:

You realise that

$content = array(get_post_meta($postId, 'content'));

creates $content as an array with a single value? (the value is whatever is returned by your get_post_meta() function) (and similarly for $media and $yt) Each of these three will always have one and only one element.

Looking at the code that follows this, I'm not sure if this is what you intended. $max will always be one, for example, and $content[$i] will always be the value returned by your get_post_meta() function - based on the result shown, presumably an array

  • Related