Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]array_merge_recursive - łączenie w nową tablicę, tablic z kluczem o wartości liczbowej.
Damonsson
post 20.11.2012, 01:19:07
Post #1





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Kiedy używam array_merge_recursive i podaję jakiś klucz w tablicach np:
Tablica1:
Kod
Array
                (
                    [cos] => red
                    [cosinnego] => blue
                )

Tablica2:
Kod
Array
                (
                    [cos] => apple
                    [cosinnego] => banana
                )


Dostaję:
Kod
Array
(
       [cos] => Array
                (
                    [0] => red
                    [1] => apple
                )
       [cosinnego] => Array
                (
                    [0] => blue
                    [1] => banana
                )
)


Czyli wszystko super, tworzy mi nową tablicę i w niej umieszcza wartości z tymi samymi kluczami.



Ale kiedy mam takie tablice:

Kod
Array
                (
                    [0] => red
                    [1] => blue
                )

Tablica2:
Kod
Array
                (
                    [0] => apple
                    [1] => banana
                )


Dostaję już niestety

Kod
Array
                (
                    [0] => red
                    [1] => blue
                    [2] => apple
                    [3] => banana
                )


Dlaczego one nie chcą się połączyć? Jest na to jakiś sposób?


Ogólnie pobieram z bazy danych 10 losowych wartości z jednej tabeli i 10 losowych wartości z drugiej tabeli. Następnie chce je ze sobą połączyć, tak żeby pojedynczy rekord z 1. i 2. tabeli utworzyły nową tablicę. Może źle się za to zabieram?

Albo może, można to połączyć już jakoś na poziomie MySQL, tak żeby było to optymalne i wydajne. Tabele łącznie mają około 30tys rekordów. Moje zapytania wyglądają tak:
  1. SELECT name FROM firstname ORDER BY Rand()*(1/ratio) LIMIT 10;

  1. SELECT name FROM lastname ORDER BY Rand() LIMIT 10





edit:
Póki co na szybko rozwiązałem to tak:
  1. $keys = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j');
  2. $firstnames = array_combine($keys, array_values($firstnames));
  3. $lastnames = array_combine($keys, array_values($lastnames));

$firstnames i $lastnames to moje tablice wejściowe. Ale jakoś mi się to rozwiązanie nie podoba, nie chcę mi się wierzyć, że trzeba tak kombinować, żeby uzyskać pożądany efekt.

Ten post edytował Damonsson 20.11.2012, 01:47:33
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 05:50