I am losing my mind with this. I have a while loop that I am making into an array. I then want to pass that array to another function but it keeps failing. I know that it is failing for some formatting error, but I can't for the life of me figure out how to get it to format properly.
Here is the format I NEED:
array(
'id' => 'some-id',
'field1' => 'somefield',
'field2' => 'someotherfield',
'title' => 'title',
'subarray' => array(
'sub1' => 'subonevalue',
'sub2' => 'sub2value'
)
),
array(
'id' => 'some-other-id',
'field1' => 'some-other-field',
'field2' => 'some-other-otherfield',
'title' => 'other title',
'subarray' => array(
'sub1' => 'othersubonevalue',
'sub2' => 'othersub2value'
)
),
I am outputting a while loop, and have tried the following:
global $wp_query;
$the_query = new WP_Query( 'post_type=mycustomposttype' );
$pointer_query = array();
while ( $the_query->have_posts() ) : $the_query->the_post();
$pointer_query[] = array(
'id' => get_post_meta( $post->ID, 'keyid', true ),
'field1' => get_post_meta( $post->ID, 'field1key', true ),
'field2' => get_post_meta( $post->ID, 'field2key', true ),
'title' => get_the_title($post->ID),
'subarray' => array(
'sub1' => get_post_meta( $post->ID, 'sub1key', true ),
'sub2' => get_post_meta( $post->ID, 'sub1key', true )
)
);
endwhile;
endif;
Unfortunately, that gives me back something like this:
Array
(
[0] => Array
(
[id] => first-id
[field1] => first-field1
[field2] => first-field2
[title] => first title
[subarray] => Array
(
[sub1] => first-sub1
[sub2] => first-sub2
)
)
[1] => Array
(
[id] => second-id
[field1] => second-field1
[field2] => second-field2
[title] => second title
[subarray] => Array
(
[sub1] => second-sub1
[sub2] => second-sub2
)
)
)
Which does NOT match the format I need, and is causing errors. I feel like there is some simple PHP transformation I am missing here, but after hours of searching I have turned up blank, and now I am depressed and frustrated. Can anyone help me please?
UPDATE (because the comments below are crappy for formatting code):
I just want to pass the array represented in the while loop ($pointer_query) to something like the following, here it is in full (although I have ALSO tried to put it in its own function and call it from the other function, hence the notation below in the comments.
function MyPointers()
{
global $wp_query;
$the_query = new WP_Query( 'post_type=mycustomposttype' );
$pointer_query = array();
while ( $the_query->have_posts() ) : $the_query->the_post();
$pointer_query[] = array(
'id' => get_post_meta( $post->ID, 'keyid', true ),
'field1' => get_post_meta( $post->ID, 'field1key', true ),
'field2' => get_post_meta( $post->ID, 'field2key', true ),
'title' => get_the_title($post->ID),
'subarray' => array(
'sub1' => get_post_meta( $post->ID, 'sub1key', true ),
'sub2' => get_post_meta( $post->ID, 'sub1key', true )
)
);
endwhile;
endif;
$pointers = array($pointer_query);
new SS_Pointer( $pointers );
}
Which then calls a separate class SS_Pointer. But the problem is in the $pointers array.
By the time you declare
$pointers
as an array, $pointer_query
already is an array. If you were to var_dump
after your $pointers
declaration you would see:Array
(
Array
(
[0] => Array
(
[id] => first-id
[field1] => first-field1
[field2] => first-field2
[title] => first title
[subarray] => Array
(
[sub1] => first-sub1
[sub2] => first-sub2
)
)
[1] => Array
(
[id] => second-id
[field1] => second-field1
[field2] => second-field2
[title] => second title
[subarray] => Array
(
[sub1] => second-sub1
[sub2] => second-sub2
)
)
)
)
That is,
$pointers
will be an array which contains one entry: an array that would have a structure exactly as you describe in the array declaration at the beginning of your question. So change:$pointers = array($pointer_query);
new SS_Pointer( $pointers );
to:
new SS_Pointer( $pointer_query );
And then the
SS_Pointer
class should then receive an array with a structure it expects.
0 comments:
Post a Comment