Array in Array in Array

Ask about general coding issues or problems here.

Moderators: macek, egami, gesf

Brumbrum
New php-forum User
New php-forum User
Posts: 9
Joined: Wed Jul 16, 2003 3:31 am

Array in Array in Array

Postby Brumbrum » Wed Jul 16, 2003 3:44 am

well...I have a array problem!

I have 10 arrays, they are filled or not. and i need one array at last!

the rules:

1. I have to know, whitch array isn't empty
2. then I have to look, witch entry from a array is in a other array too and this entry I have to save in a last array. well...

EXAMPLE:

my arrays
$first_array = array(1,2,3,6);
$second_array = array(2,4,5,6);
$third_array = array();
$fourth_array = array(2,3,6,8);

1........
$first_array = array(1,2,3,6);
$second_array = array(2,4,5,6);
$fourth_array = array(2,3,6,8);

2........
==>> $last_array = array(2,6);

So, any ideas? :D

User avatar
Joan Garnet
Moderator
Moderator
Posts: 387
Joined: Sat Aug 03, 2002 2:56 am
Location: Mars
Contact:

Postby Joan Garnet » Wed Jul 16, 2003 5:47 am

I made this script that does the trick:

Code: Select all

<?php
$my_array[0] = array(1,2,3,6);
$my_array[1] = array(2,4,5,6);
$my_array[2] = array();
$my_array[3] = array(2,3,6,8);
$my_array[4] = array(2,6);
$my_array[5] = array();
$my_array[6] = array();
$my_array[7] = array(7,9,2,11,6,99);


$count = 1;
for ( $i=0; $i<sizeof($my_array); $i++){
   
   if ( sizeof ($my_array[$i]) > 0 ){

      $str .= "\$my_array[$i]";
      $i < sizeof($my_array)-$count ? $str .= "," : "" ;
   }else{
      $count++;
   }
}

//echo $str;
eval( "\$result = array_intersect ($str);" );

echo "<pre>";
print_r ($result);
echo "</pre>";
?>


I hope it helps :D

Brumbrum
New php-forum User
New php-forum User
Posts: 9
Joined: Wed Jul 16, 2003 3:31 am

Postby Brumbrum » Wed Jul 16, 2003 7:03 am

Unfortunately it doesn't work for 100% :(

The error message is:

Warning: Wrong parameter count for array_intersect() in /home/ref/www/REF/angemeldet.php(260) : eval()'d code on line 1

Here you have my code, it's a litte bit ...well...you see it!
But I implemeted everything like the example...!

Does anyone know, why I have this error message? Did I forgot anything?

Thank you for your answer!

Code: Select all

if($name){
            $sql_suche_name = mysql_query("SELECT tab_user.userID, tab_user.name FROM tab_user WHERE tab_user.name like '%$name%'");
            $s = 1;
            while($suID_name = mysql_fetch_array($sql_suche_name)){
               
               if($s==1){
                  $suID1 = $suID_name["userID"];
                  $such_userIDx[1] = $suID1;
               }
               else
               {
                  $suID1 = ",";
                  $suID1 .= $suID_name["userID"];
                  $such_userIDx[1] .= $suID1;
               }
            $s++;
            }
            mysql_free_result($sql_suche_name);
            $such_ID = 1;

         }
         //-------------------------------------
         if($company){
            $sql_suche_company = mysql_query("SELECT tab_user.userID, tab_user.company FROM tab_user WHERE tab_user.company like '%$company%'");
            $s = 1;
            while($suID_company = mysql_fetch_array($sql_suche_company)){
               
               if($s==1){
                  $suID1 = $suID_company["userID"];
                  $such_userIDx[2] = $suID1;
               }
               else
               {
                  $suID1 = ",";
                  $suID1 .= $suID_company["userID"];
                  $such_userIDx[2] .= $suID1;
               }
               $s++;
            }
            mysql_free_result($sql_suche_company);
         }
         //-------------------------------------
         if($country){
            $sql_suche_country = mysql_query("SELECT tab_user.userID, tab_user.country FROM tab_user WHERE tab_user.country like '%$country%'");
            $s = 1;
            while($suID_country = mysql_fetch_array($sql_suche_country)){
               if($s==1){
                  $suID1 = $suID_country["userID"];
                  $such_userIDx[3] = $suID1;
               }
               else
               {
                  $suID1 = ",";
                  $suID1 .= $suID_country["userID"];
                  $such_userIDx[3] .= $suID1;
               }
               $s++;
            }
            mysql_free_result($sql_suche_country);
         }
         //-------------------------------------
         if($ref || $ref == 0){
            $sql_suche_ref = mysql_query("SELECT tab_ref.userID, tab_ref.ref FROM tab_ref WHERE tab_ref.ref = '$ref'");
            $s = 1;
            while($suID_ref = mysql_fetch_array($sql_suche_ref)){
               if($s==1){
                  $suID1 = $suID_ref["userID"];
                  $such_userIDx[4] = $suID1;
               }
               else
               {
                  $suID1 = ",";
                  $suID1 .= $suID_ref["userID"];
                  $such_userIDx[4] .= $suID1;
               }
               $s++;
            }
            mysql_free_result($sql_suche_ref);
         }
         //-------------------------------------
         if($datesID){
            foreach ($datesID as $dat){
               $sql_suche_dates .= mysql_query("SELECT tab_meetings.datesID, tab_meetings.userID FROM tab_meetings WHERE tab_meetings.datesID = '$dat'");
            }
            $s = 1;
            while($suID_dates = mysql_fetch_array($sql_suche_dates))
            {
               if($s==1){
                  $suID1 = $suID_dates["userID"];
                  $such_userIDx[5] = $suID1;
               }
               else
               {
                  $suID1 = ",";
                  $suID1 .= $suID_dates["userID"];
                  $such_userIDx[5] .= $suID1;
               }
               $s++;
            }
            mysql_free_result($sql_suche_dates);

         }
         //-------------------------------------
         if($answers2 ){
            $sql_suche_answers2 = mysql_query("SELECT tab_answers.answer, tab_answers.userID FROM tab_answers WHERE tab_answers.whatID = 2 AND tab_answers.answers = '$answers2'");
            $s = 1;
            while($suID_answers2 = mysql_fetch_array($sql_suche_answers2)){
               if($s==1){
                  $suID1 = $suID_answers2["userID"];
                  $such_userIDx[6] = $suID1;
               }
               else
               {
                  $suID1 = ",";
                  $suID1 .= $suID_answers2["userID"];
                  $such_userIDx[6] .= $suID1;
               }
               $s++;
            }
            mysql_free_result($sql_suche_answers2);
         }
         //-------------------------------------
         if($answers3){
            $sql_suche_answers3 = mysql_query("SELECT tab_answers.answer, tab_answers.userID FROM tab_answers WHERE tab_answers.whatID = 3 AND tab_answers.answers = '$answers2'");
            $s = 1;
            while($suID_answers3 = mysql_fetch_array($sql_suche_answers3)){
               if($s==1){
                  $suID1 = $suID_answers3["userID"];
                  $such_userIDx[7] = $suID1;
               }
               else
               {
                  $suID1 = ",";
                  $suID1 .= $suID_answers3["userID"];
                  $such_userIDx[7] .= $suID1;
               }
               $s++;
            }
            mysql_free_result($sql_suche_answers3);
         }
         //-------------------------------------
         if($hotel){
            $sql_suche_hotel = mysql_query("SELECT tab_hotel.nights, tab_hotel.userID FROM tab_hotel WHERE tab_hotel.nights = '$hotel'");
            $s = 1;
            while($suID_hotel = mysql_fetch_array($sql_suche_hotel)){
               if($s==1){
                  $suID1 = $suID_hotel["userID"];
                  $such_userIDx[8] = $suID1;
               }
               else
               {
                  $suID1 = ",";
                  $suID1 .= $suID_hotel["userID"];
                  $such_userIDx[8] .= $suID1;
               }
               $s++;
            }
            mysql_free_result($sql_suche_hotel);

         }
         //-------------------------------------
         if($arr_date){
            $sql_suche_arr_date = mysql_query("SELECT tab_reise.date, tab_reise.userID FROM tab_reise WHERE tab_reise.whatID = 7 AND tab_reise.date = '$arr_date'");
            $s = 1;
            while($suID_arr_date = mysql_fetch_array($sql_suche_arr_date)){
               if($s==1){
                  $suID1 = $suID_arr_date["userID"];
                  $such_userIDx[9] = $suID1;
               }
               else
               {
                  $suID1 = ",";
                  $suID1 .= $suID_arr_date["userID"];
                  $such_userIDx[9] .= $suID1;
               }
               $s++;
            }
            mysql_free_result($sql_suche_arr_date);
         }
         //-------------------------------------
         if($dep_date){
            $sql_suche_dep_date = mysql_query("SELECT tab_reise.date, tab_reise.userID FROM tab_reise WHERE tab_reise.whatID = 8 AND tab_reise.date = '$dep_date'");
            $s = 1;
            while($suID_dep_date = mysql_fetch_array($sql_suche_dep_date)){
               if($s==1){
                  $suID1 = $suID_dep_date["userID"];
                  $such_userIDx[10] = $suID1;
               }
               else
               {
                  $suID1 = ",";
                  $suID1 .= $suID_dep_date["userID"];
                  $such_userIDx[10] .= $suID1;
               }
               $s++;
            }
            mysql_free_result($sql_suche_dep_date);
         }
         //-------------------------------------
         if($request){
            $sql_suche_request = mysql_query("SELECT tab_request.request, tab_request.userID FROM tab_request WHERE tab_request.request like '%$request%'");
            $s = 1;
            while($suID_request = mysql_fetch_array($sql_suche_request)){
               if($s==1){
                  $suID1 = $suID_request["userID"];
                  $such_userIDx[11] = $suID1;
               }
               else
               {
                  $suID1 = ",";
                  $suID1 .= $suID_request["userID"];
                  $such_userIDx[11] .= $suID1;
               }
               $s++;
            }
            mysql_free_result($sql_suche_request);
         }

         // SPEICHERT ALLE WERTE, DIE IN ALLEN ARRAYS VORHANDEN SIND!
         $count = 2;
         for($i=1; $i<sizeof($such_userIDx); $i++)
         {
            print_r($such_userIDx[$i]);
             if ( sizeof ($such_userIDx[$i]) > 0 ){
               $str .= "\$such_userIDx[$i]";
               $i < sizeof($such_userIDx)-$count ? $str .= "," : "" ;
             }
             else
            {
                $count++;
            }
         }
         echo $str;
         eval( "\$such_uID = array_intersect ($str);" );
         print_r ($such_uID);

User avatar
Joan Garnet
Moderator
Moderator
Posts: 387
Joined: Sat Aug 03, 2002 2:56 am
Location: Mars
Contact:

Postby Joan Garnet » Wed Jul 16, 2003 7:34 am

I suggest you to try my example separately and you will see how it works.
The idea is fill an array with all the arrays that will be compared, so you get a multidimensional array like this:

Code: Select all

$my_array[0] = array(1,2,3,6);
$my_array[1] = array(2,4,5,6);
$my_array[2] = array();



What do you get at the end of that script (without my part)?
Show me what the print_r() statement outputs for all arrays that take part in it.
Maybe I can help you if you explain a little bit how it works.

Brumbrum
New php-forum User
New php-forum User
Posts: 9
Joined: Wed Jul 16, 2003 3:31 am

Postby Brumbrum » Wed Jul 16, 2003 7:59 am

Ohohoh...I see now, what I did wrong. Your example works perfect! I just didn't make a multidimensional array, because it didn't go!

Well, all I have to do now is, trying to pack my numbers I take from a mysql database in a multidimensional array and not in a one dimensional array like now.

Do you know, how I can attach a new number in a multidimensional array, I mean, something like this, only two dimensional:

Code: Select all

 if($s==1){
                  $suID1 = $s;
                  $such_userIDx[1] = $suID1;
               }
               else
               {
                  $suID1 = ",";
                  $suID1 .= $s;
                  $such_userIDx[1] .= $suID1;
               }


My Problem is, that I don't know in advantage, how many sql results I get, so i have to make my array dinamic. this is a one dimensional, but how can I make a two dimensional in this style?

Any idea?

User avatar
Joan Garnet
Moderator
Moderator
Posts: 387
Joined: Sat Aug 03, 2002 2:56 am
Location: Mars
Contact:

Postby Joan Garnet » Wed Jul 16, 2003 8:09 am

if I understood what you meant...
I think that you can use this:

Code: Select all

array_push ($such_userIDx, $suID1);

instead of this:

Code: Select all

$such_userIDx[1] = $suID1;


so you don't need to specify the position.
Is that ?? :D

Brumbrum
New php-forum User
New php-forum User
Posts: 9
Joined: Wed Jul 16, 2003 3:31 am

Postby Brumbrum » Wed Jul 16, 2003 11:49 pm

I solved this problem like this:

Code: Select all

$such_userIDx[10][$s] = $suID1;


So i have a multisimensional array, but...BUT!
I HAVE THIS DAMN ERROR!

Parse error: parse error, unexpected ')' in /home/ref/www/REF/angemeldet.php(196) : eval()'d code on line 1

Brumbrum
New php-forum User
New php-forum User
Posts: 9
Joined: Wed Jul 16, 2003 3:31 am

Postby Brumbrum » Thu Jul 17, 2003 12:50 am

It works :)

THANK's very much!!

The code:

Code: Select all

for($i=1; $i<11; $i++)
         {
             if ( sizeof($such_userIDx[$i]) > 0 ){
               if ($str != ""){$str .= "," ;}
               $str .= "\$such_userIDx[$i]";
               //$i < sizeof($such_userIDx)-$count ? $str .= "," : "" ;
             }
             else
            {
                $count++;
            }
         }


Return to “PHP coding => General”

Who is online

Users browsing this forum: Google [Bot], Google Feedfetcher and 1 guest

cron