<?php // ORIGINAL ARRAY STRING FROM POST $string_of_array = 'Array ( [0] => Array ( [ID] => 1 [UserInfo] => Array ( [ID] => 1 [caps] => Array ( [administrator] => 1 ) [cap_key] => wp_capabilities [roles] => Array ( [0] => administrator ) [allcaps] => Array ( [switch_themes] => 1 [edit_themes] => 1 [activate_plugins] => 1 [edit_plugins] => 1 [edit_users] => 1 [edit_files] => 1 [manage_options] => 1 [moderate_comments] => 1 [manage_categories] => 1 [manage_links] => 1 [upload_files] => 1 [import] => 1 [unfiltered_html] => 1 [edit_posts] => 1 [edit_others_posts] => 1 [edit_published_posts] => 1 [publish_posts] => 1 [edit_pages] => 1 [read] => 1 [level_10] => 1 [level_9] => 1 [level_8] => 1 [level_7] => 1 [level_6] => 1 [level_5] => 1 [level_4] => 1 [level_3] => 1 [level_2] => 1 [level_1] => 1 [level_0] => 1 [edit_others_pages] => 1 [edit_published_pages] => 1 [publish_pages] => 1 [delete_pages] => 1 [delete_others_pages] => 1 [delete_published_pages] => 1 [delete_posts] => 1 [delete_others_posts] => 1 [delete_published_posts] => 1 [delete_private_posts] => 1 [edit_private_posts] => 1 [read_private_posts] => 1 [delete_private_pages] => 1 [edit_private_pages] => 1 [read_private_pages] => 1 [delete_users] => 1 [create_users] => 1 [unfiltered_upload] => 1 [edit_dashboard] => 1 [update_plugins] => 1 [delete_plugins] => 1 [install_plugins] => 1 [update_themes] => 1 [install_themes] => 1 [update_core] => 1 [list_users] => 1 [remove_users] => 1 [add_users] => 1 [promote_users] => 1 [edit_theme_options] => 1 [delete_themes] => 1 [export] => 1 [administrator] => 1 ) [filter] => [user_login] => admin [user_nicename] => admin [user_email] => goranefbl@gmail.com [user_url] => [user_registered] => 2014-01-29 10:57:09 [user_activation_key] => [user_status] => 0 [display_name] => admin [wlm_feed_url] => http://p...content-available-to-author-only...n.com/excel/feed/?wpmfeedkey=1;2e7e48ca65d94e5f0ec1baae46e4972c [wpm_login_date] => 1392155735 [wpm_login_ip] => 62.68.119.252 ) [Sequential] => [Levels] => Array ( [1391447566] => stdClass Object ( [Level_ID] => 1391447566 [Name] => Team Membership [Cancelled] => [CancelDate] => [Pending] => [UnConfirmed] => [Expired] => [ExpiryDate] => 1393866766 [SequentialCancelled] => [Active] => 1 [Status] => Array ( [0] => Active ) [Timestamp] => 1391447566 [TxnID] => WL-1-1391447566 ) ) [PayPerPosts] => Array ( ) ) )'; // CONVERT THE STRING TO AN ARRAY $response = print_r_reverse($string_of_array); // RECREATE THE OBJECT PART OF THE ARRAY $object = new stdClass(); $object->Level_ID = 1391447566; $object->Name = 'Team Membership'; $object->Cancelled = ''; $object->CancelDate = ''; $object->Pending = ''; $object->UnConfirmed = ''; $object->Expired = ''; $object->ExpiryDate = 1393866766; $object->SequentialCancelled = ''; $object->Active = 1; $object->Timestamp = 1391447566; $object->TxnID = 'WL-1-1391447566'; // ADD THE OBJECT TO THE ARRAY $response[0]['Levels'][] = $object; // UNSET THE ORIGINAL MOCK OBJECT SINCE IT'S NOT A REAL OBJECT // PRINT THE FULL ARRAY TO MAKE SURE WE ARE ON TRACK // LOOK AT THE LEVELS PART OF THE ARRAY SPECIFICALLY // LOOP THROUGH EACH LEVEL AND PULL OUT THE NAME foreach ($response[0]['Levels'] AS $level_key => $level_val) { // PRINT OUT DEBUG STUFF print "\n<BR><FONT COLOR=GREEN>KEY:</FONT> <FONT COLOR=BLUE>".$level_key."</FONT>"; print "\n<BR><FONT COLOR=GREEN>VAL:</FONT> <FONT COLOR=BLUE><PRE>".print_r($level_val, true)."</PRE></FONT>"; print "\n<BR><FONT COLOR=GREEN>NAME:</FONT> <FONT COLOR=BLUE>".$level_val->Name."</FONT>"; // ASSIGN THE LEVEL NAME TO A VARIABLE $level_name = $level_val->Name; } // PRINT THE OUTPUT echo "\n\n<BR><BR>Final Captured Level Name: ".$level_name; // FUNCTION TO TURN THE 'print_r' VERSION OF THE ARRAY INTO AN ACTUAL ARRAY function print_r_reverse($in) { // bottomed out to something that isn't an array return $in; } else { // this is an array, lets parse it // this is a tested array/recursive call to this function // take a set of spaces off the beginning $spaces = $match[1]; for ($i = 0; $i < $lines_total; $i++) { } } } // make sure we only match stuff with 4 preceding spaces (stuff for this array and not a nested one) $previous_key = ''; // store the following in $pos: // array with key = key of the parsed array's item // value = array(start position in $in, $end position in $in) foreach ($matches as $match) { $key = $match[1][0]; if ($previous_key != '') $pos[$previous_key][1] = $match[0][1] - 1; $previous_key = $key; } foreach ($pos as $key => $where) { // recursively see if the parsed out value is an array too } return $ret; } }
Standard input is empty
<PRE><FONT COLOR=ORANGE>Array
(
[0] => Array
(
[ID] => 1
[UserInfo] => Array
(
[ID] => 1
[caps] => Array
(
[administrator] => 1
)
[cap_key] => wp_capabilities
[roles] => Array
(
[0] => administrator
)
[allcaps] => Array
(
[switch_themes] => 1
[edit_themes] => 1
[activate_plugins] => 1
[edit_plugins] => 1
[edit_users] => 1
[edit_files] => 1
[manage_options] => 1
[moderate_comments] => 1
[manage_categories] => 1
[manage_links] => 1
[upload_files] => 1
[import] => 1
[unfiltered_html] => 1
[edit_posts] => 1
[edit_others_posts] => 1
[edit_published_posts] => 1
[publish_posts] => 1
[edit_pages] => 1
[read] => 1
[level_10] => 1
[level_9] => 1
[level_8] => 1
[level_7] => 1
[level_6] => 1
[level_5] => 1
[level_4] => 1
[level_3] => 1
[level_2] => 1
[level_1] => 1
[level_0] => 1
[edit_others_pages] => 1
[edit_published_pages] => 1
[publish_pages] => 1
[delete_pages] => 1
[delete_others_pages] => 1
[delete_published_pages] => 1
[delete_posts] => 1
[delete_others_posts] => 1
[delete_published_posts] => 1
[delete_private_posts] => 1
[edit_private_posts] => 1
[read_private_posts] => 1
[delete_private_pages] => 1
[edit_private_pages] => 1
[read_private_pages] => 1
[delete_users] => 1
[create_users] => 1
[unfiltered_upload] => 1
[edit_dashboard] => 1
[update_plugins] => 1
[delete_plugins] => 1
[install_plugins] => 1
[update_themes] => 1
[install_themes] => 1
[update_core] => 1
[list_users] => 1
[remove_users] => 1
[add_users] => 1
[promote_users] => 1
[edit_theme_options] => 1
[delete_themes] => 1
[export] => 1
[administrator] => 1
)
[filter] =>
[user_login] => admin
[user_nicename] => admin
[user_email] => goranefbl@gmail.com
[user_url] =>
[user_registered] => 2014-01-29 10:57:09
[user_activation_key] =>
[user_status] => 0
[display_name] => admin
[wlm_feed_url] => http://p...content-available-to-author-only...n.com/excel/feed/?wpmfeedkey=1;2e7e48ca65d94e5f0ec1baae46e4972c
[wpm_login_date] => 1392155735
[wpm_login_ip] => 62.68.119.252
)
[Sequential] =>
[Levels] => Array
(
[1391447567] => stdClass Object
(
[Level_ID] => 1391447566
[Name] => Team Membership
[Cancelled] =>
[CancelDate] =>
[Pending] =>
[UnConfirmed] =>
[Expired] =>
[ExpiryDate] => 1393866766
[SequentialCancelled] =>
[Active] => 1
[Status] => Array
(
[0] => Active
)
[Timestamp] => 1391447566
[TxnID] => WL-1-1391447566
)
)
[PayPerPosts] => Array
(
)
)
)
</FONT></PRE>
<PRE><FONT COLOR=RED>Array
(
[1391447567] => stdClass Object
(
[Level_ID] => 1391447566
[Name] => Team Membership
[Cancelled] =>
[CancelDate] =>
[Pending] =>
[UnConfirmed] =>
[Expired] =>
[ExpiryDate] => 1393866766
[SequentialCancelled] =>
[Active] => 1
[Status] => Array
(
[0] => Active
)
[Timestamp] => 1391447566
[TxnID] => WL-1-1391447566
)
)
</FONT></PRE>
<BR><FONT COLOR=GREEN>KEY:</FONT> <FONT COLOR=BLUE>1391447567</FONT>
<BR><FONT COLOR=GREEN>VAL:</FONT> <FONT COLOR=BLUE><PRE>stdClass Object
(
[Level_ID] => 1391447566
[Name] => Team Membership
[Cancelled] =>
[CancelDate] =>
[Pending] =>
[UnConfirmed] =>
[Expired] =>
[ExpiryDate] => 1393866766
[SequentialCancelled] =>
[Active] => 1
[Status] => Array
(
[0] => Active
)
[Timestamp] => 1391447566
[TxnID] => WL-1-1391447566
)
</PRE></FONT>
<BR><FONT COLOR=GREEN>NAME:</FONT> <FONT COLOR=BLUE>Team Membership</FONT>
<BR><BR>Final Captured Level Name: Team Membership