php - Search for value in object returned from mySQL -
this object returned mysql request:
array(6) { [0]=> object(stdclass)#48 (2) { ["meta_key"]=> string(16) "bp_activity_tagz" ["meta_value"]=> string(1) "1" } [1]=> object(stdclass)#30 (2) { ["meta_key"]=> string(14) "favorite_count" ["meta_value"]=> string(1) "3" } [2]=> object(stdclass)#30 (2) { ["meta_key"]=> string(14) "bp_activity_tagz" ["meta_value"]=> string(1) "4" } [3]=> object(stdclass)#30 (2) { ["meta_key"]=> string(14) "bp_activity_tagz" ["meta_value"]=> string(1) "2" } [4]=> object(stdclass)#30 (2) { ["meta_key"]=> string(14) "bp_activity_spam" ["meta_value"]=> string(1) "0" } [5]=> object(stdclass)#30 (2) { ["meta_key"]=> string(14) "bp_activity_universal" ["meta_value"]=> string(0) "" } }
depending on meta_key
need place each value in own place (one of meta_key
might not exist)
of course foreach
can trick want execute each function step step, switching case
not solution here.
i more searching array-search
function object this.
function (imaginary language) if array $array
in $array meta_value meta_key 'bp_activity_tags' if exist meta_value else in $array meta_value (every) meta_key 'bp_activity_tagz' if exist foreach meta_value else in $array meta_value meta_key 'bp_activity_spam' if exist else
this function requesting array:
$metas = $wpdb->get_results( $wpdb->prepare( "select meta_key, meta_value {$bp->activity->table_name_meta} activity_id = %d", $activity_id ) ); if ( !empty( $metas ) ) { $metas = array_map( 'maybe_unserialize', (array) $metas ); foreach( $metas $mkey => $mvalue ) { wp_cache_set( 'bp_activity_meta_' . $activity_id . '_' . $mkey, $mvalue, 'bp' ); } } // no result return false if ( empty( $metas ) ) return false; // maybe, maybe... unserialize $metas = array_map( 'maybe_unserialize', (array) $metas ); // return first item in array if 1, else return metas found $retval = ( 1 == count( $metas ) ? $metas[0] : $metas );
i first reformat array:
$data = array(); foreach ($array $values) { $data[$values->meta_key][] = $values->meta_value; }
then write code:
if (isset($data['bp_activity_tags'])) { foo($data['bp_activity_tags']); } ...
Comments
Post a Comment