array_intersect возвращает серьезность: 4096 Сообщение: Объект класса stdClass не удалось преобразовать в строку CodeIgniter

#php #arrays #object #stdclass #array-intersect

#php #массивы #object #stdclass #array-intersect

Вопрос:

Я получил два массива, оба имеют несколько значений с объектами класса std, я хочу использовать ‘array_intersect’, но он показывает «Серьезность: 4096 Сообщение: объект класса stdClass не удалось преобразовать в строку»

Код контроллера:

     $AlreadyInsertedList = $this->bill->GetBillsbyDate($Givendate); //array1
    $NotInserted = $this->admin->GetACustomersbyArea($areaid);       //array2
    $finallist = NULL;        //finalarray
    $finallist = array_intersect($AlreadyInsertedList,$allcustomersbyarea); //Line number 88 
    //$array = json_decode(json_encode($finallist)); //already tried not working
  

Хотя он дает требуемые результаты, но с большим количеством ошибок, я прилагаю снимок экрана с ним, посмотрите на панель scoll (большое количество ошибок)
введите описание изображения здесь

Ответ №1:

Этот код возвращает желаемые результаты..

 function ary_diff( $ary_1, $ary_2 ) {   // compare the value of 2 array   // get differences that in ary_1 but not in ary_2   // get difference that in ary_2 but not in ary_1   // return the unique difference between value of 2 array   $diff = array();

  // get differences that in ary_1 but not in ary_2   foreach ( $ary_1 as $v1 ) {
    $flag = 0;
    foreach ( $ary_2 as $v2 ) {
      $flag |= ( $v1 == $v2 );
      if ( $flag ) break;
    }
    if ( !$flag ) array_push( $diff, $v1 );   }

  // get difference that in ary_2 but not in ary_1   foreach ( $ary_2 as $v2 ) {
    $flag = 0;
    foreach ( $ary_1 as $v1 ) {
      $flag |= ( $v1 == $v2 );
      if ( $flag ) break;
    }
    if ( !$flag amp;amp; !in_array( $v2, $diff ) ) array_push( $diff, $v2 );   }

  return $diff; }
  

Комментарии:

1. Если этот код сработал для вас, то вы можете принять свой собственный ответ, поэтому, пожалуйста, сделайте это, чтобы вопрос можно было закрыть.