## Array in Array in Array

Moderators: egami, macek, gesf

Brumbrum
New php-forum User
Posts: 9
Joined: Wed Jul 16, 2003 3:31 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
There are only 10 types of people in the world:
Those who understand binary and those who don't

Joan Garnet
Moderator
Posts: 387
Joined: Sat Aug 03, 2002 2:56 am
Location: Mars
Contact:
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

Brumbrum
New php-forum User
Posts: 9
Joined: Wed Jul 16, 2003 3:31 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?

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);``
There are only 10 types of people in the world:
Those who understand binary and those who don't

Joan Garnet
Moderator
Posts: 387
Joined: Sat Aug 03, 2002 2:56 am
Location: Mars
Contact:
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
Posts: 9
Joined: Wed Jul 16, 2003 3:31 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?
There are only 10 types of people in the world:
Those who understand binary and those who don't

Joan Garnet
Moderator
Posts: 387
Joined: Sat Aug 03, 2002 2:56 am
Location: Mars
Contact:
if I understood what you meant...
I think that you can use this:

Code: Select all

``array_push (\$such_userIDx, \$suID1);``

Code: Select all

``\$such_userIDx[1] = \$suID1; ``

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

Brumbrum
New php-forum User
Posts: 9
Joined: Wed Jul 16, 2003 3:31 am
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
There are only 10 types of people in the world:
Those who understand binary and those who don't

Brumbrum
New php-forum User
Posts: 9
Joined: Wed Jul 16, 2003 3:31 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++;            }         }``
There are only 10 types of people in the world:
Those who understand binary and those who don't