Inigo Posted November 23, 2010 Share Posted November 23, 2010 This is a function that is being called from an ajax request. I can arrange things so that I get the 'no images' msg, but NOT the 'yep, there\'s images'. function build_post($post){ if ($post['image_data'] == 0){ return 'no images.'; } else { return 'yep, there\'s images'; } } If I change the function to just return $post['image_data'], I get an 'Object Object in my javascript alert, meaning the php process is working correctly so there can't be any errors in constructing the array up until this point. (I can also access each of the possible array elements by changing it to return $post['image_data'][1]['alignment'] or whatever.. so like I say, I'm sure there are no errors in the array construction) I really can't for the life of me then, figure out why I can't get the 'yep there's images' msg. I can probably work around this, but it's bugging me, so if anyone could throw a few possibilities as to how this could be, then I'd be most grateful. Thanks Quote Link to comment Share on other sites More sharing options...
hokie5449 Posted November 23, 2010 Share Posted November 23, 2010 Are you sure you're not trying to do something like: if (count($post['image_data']) == 0){ or if ( !isset($post['image_data'])){ Quote Link to comment Share on other sites More sharing options...
Inigo Posted November 23, 2010 Author Share Posted November 23, 2010 yeah no, doesn't work I'm afraid. It's a bit more complicated as the variable name is changing as I'm passing it between functions.. I'm using codeigniter my full code is as follows: At the controller- function new_post(){ $image_codes = $_POST['image_codes']; $field_data = $_POST['info']; $post_body = $_POST['post_body']; $this->load->model('blog_builder'); $ordered_data = $this->blog_builder->sort_field_data($image_codes, $field_data, $post_body); $constructed_post = $this->blog_builder->build_post($ordered_data); $return_array['error'] = ''; $return_array['success'] = true; $return_array['html_data'] = $constructed_post; echo json_encode($return_array); exit(); } At the model- function sort_field_data($image_codes, $field_data, $post_body){ $post_bodyHTML = $post_body; $field_data = json_decode($field_data); if ($image_codes != false){ $image_codes = json_decode($image_codes); foreach ($image_codes as $key=>$value){ // GET THE IMAGE CODES AND STICK 'EM IN A NICE, ORDERED ARRAY $i = $key + 1; $code = $value; $image[$i]['code'] = $code; } } else { $image = false; } foreach($field_data as $key=>$value){ // FIND FIELD DATA RELATING TO IMAGES AND ADD TO ARRAY if(is_numeric(substr($key, -1))){ $field_id = preg_replace("/[\d]/","",$key); // all letters $img_id = preg_replace("/[\D]/","",$key); // all numbers $image[$img_id][$field_id] = $value; } elseif($key == 'title'){ $post_title = $value; // THEN GET THE TITLE, SUBTITLE & BODY, AND STORE THEM IN VARS } elseif($key == 'sub_title'){ $post_subTitle = $value; } } $ordered_data = array( 'image_data' => $image, 'title' => $post_title, // AND PUT THE WHOLE LOT IN ONE ARRAY 'post_subTitle' => $post_subTitle, 'post_bodyHTML' => $post_bodyHTML ); return $ordered_data; } function build_post($post){ if ($post['image_data'] == false){ return 'no images.'; } else { return 'yep, there\'s images'; } } The data being passed is like this (for example)- $image_codes = false; $field_data = '{"title":"this is a title","sub_title":"this is a subtiutle"}'; $post_body = 'blah blah'; Thanks for your help, I expect it's something ridiculously obvious but this really is baffling me. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.