Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Połączenie wartości w tablicy
Forum PHP.pl > Forum > PHP
winiar789
Mam coś takiego :

Array
(
[0] => Array
(
[data-position] => 1
[data-shopurl] =>nazwaa
[data-offer-price] =>
)

[1] => Array
(
[data-position] =>
[data-shopurl] =>
[data-offer-price] => 458.00
)

[2] => Array
(
[data-position] => 2
[data-shopurl] => nazwaa
[data-offer-price] =>
)

[3] => Array
(
[data-position] =>
[data-shopurl] =>
[data-offer-price] => 469.27
)
)

a chciałbym uzyskać:


Array
(
[0] => Array
(
[data-position] => 1
[data-shopurl] =>nazwaa
[data-offer-price] => 458.00
)

[1] => Array
(
[data-position] => 2
[data-shopurl] => nazwaa
[data-offer-price] => 469.27
)
)

Pyton_000
A co już masz?
winiar789
Tablice w zmiennej, wynik tego za pomocą

  1. echo "<pre>";
  2. print_R($wyswietl_wynik);
  3. echo "</pre>";


nie mogę sobie poradzić z połączeniem tego w jakikolwiek sposób
Pyton_000
Bierzesz pętelkę FOR i lecisz tyle razy ile masz rekordów (zakładam że zawsze będzie parzysta ilość) zwiększając licznik zawsze o 2
w pętli bierzesz element $n i $n+1 i łączysz je do nowej tablicy.
winiar789
Czy jest szansa abyś mi pokazał to na przykładzie bo chyba tego nie rozumiem.
winiar789
Po dodaniu tak usną mi pierwsze array

  1. echo "<pre>";
  2. for($i = 0; $i < count($tablica); ++$i) {
  3. print_R($tablica[$i]);
  4. }
  5. echo "</pre>";


Array
(
[data-position] => 1
[data-shopurl] => nazwa1
[data-offer-price] =>
)
Array
(
[data-position] =>
[data-shopurl] =>
[data-offer-price] => 458.00
)
Array
(
[data-position] => 2
[data-shopurl] => nazwa2
[data-offer-price] =>
)
Array
(
[data-position] =>
[data-shopurl] =>
[data-offer-price] => 469.27
)
Array
(
[data-position] => 3
[data-shopurl] => nazwa3
[data-offer-price] =>
)
Array
(
[data-position] =>
[data-shopurl] =>
[data-offer-price] => 489.94
)
Pyton_000
$++

++$i oznacza "najpierw powiększ a potem działaj"
winiar789
Nawet jak zamienie na $i++ to jest taka sama historia.

  1. echo "<pre>";
  2. for($i = 0; $i < count($tablica); $i++) {
  3. print_R($tablica[$i]);
  4. }
  5. echo "</pre>";


Zrobiłem coś takiego, brakuje mi tak naprawdę tylko tego aby połączyć te array
  1. echo "<pre>";
  2. for($i = 0; $i < count($tablica); $i++) {
  3. $result = array_diff($tablica[$i], array(''));
  4. print_R($result);
  5. }
  6. echo "</pre>";



Array
(
[data-position] => 1
[data-shopurl] => nazwaa1
)
Array
(
[data-offer-price] => 458.00
)
Array
(
[data-position] => 2
[data-shopurl] => nazwaa2
)
Array
(
[data-offer-price] => 469.27
)
Array
(
[data-position] => 3
[data-shopurl] => nazwaa3
)
Array
(
[data-offer-price] => 489.94
)
Pyton_000
zamiast $i++ zrów $i=$i+2
A w samej pętli bierz 2 elementy z tablicy: $tablica[$i] oraz $tablica[$i+1]

Dalej już sobie chyba poradzisz.
viking
I zamiast
  1. for($i = 0; $i < count($tablica); $i++) {
daj
  1. for($i = 0, $c = count($tablica); $i < $c; $i++) {
Teraz liczysz ilość elementów przy każdym przebiegu pętli.
winiar789
Nie no ekstra efekt jest taki jaki oczekiwałem, tylko oczywiście nigdy nie jest tak pięknie jak by sie chciało mianowicie jak próbuje
do dodać do bazy to dodaje mi narastająco ...

  1. foreach { ---
  2.  
  3. for($i = 0; $i < count($tab); $i=$i+2) {
  4.  
  5. $sql->query("INSERT INTO nazwa (xx1, xx2, xx3, xx4) VALUES (
  6. '".$tab[$i]['data-position']."',
  7. '".$tab[$i]['data-shopurl']."',
  8. '".$tab[$i+1]['data-offer-price']."',
  9. '".$tab[$i]['number-shopid']."')");
  10.  
  11.  
  12. }
  13. }


efekt jest taki - bo oczywiscie nad tym też jest pętla że dodaje narastająco .... czyli powiela wpis
pierwszy jest jeden nastepny wpis występuje dwa razy następny trzy razy itd. itd.

123

123 123

123 123 123

123 123 123 123

123 123 123 123 123


Niestety rozwiązanie Pana viking - nie jest dobrym rozwiązaniem
Pyton_000
To już Ty namieszałeś. Chciałeś jedno a teraz się okazuje że masz całkiem coś innego. Pokaż lepiej kod bo rozwiązanie jest poprawne.
winiar789
Dupa ze mnie i tyle - taka prawda. Pomóż mi proszę bo siedzę nad tym już tyle :/

  1.  
  2. $res = $sql->query("SELECT url_link, numer_id FROM moja_tabelka");
  3. if($res>0) {
  4.  
  5. $arRes = $sql->GetResult();
  6. foreach ($arRes as $k => $v) {
  7.  
  8. $numer_id = $v['numer_id'];
  9. $target_url = $v['url_link'];
  10.  
  11. $html = file_get_html($target_url);
  12. foreach($html->find('.clasa_wartosci') as $element) {
  13.  
  14. $va['data-position']= $element->getAttribute('data-position');
  15. $va['data-shopurl'] = $element->getAttribute('data-shopurl');
  16. $va['number-shopid'] = $numer_id;
  17. $va['data-offer-price'] = $element->getAttribute('data-offer-price');
  18. $tab[] = $va;
  19.  
  20. }
  21.  
  22. for($i = 0; $i < count($tab); $i=$i+2) {
  23.  
  24. $sql->query("INSERT INTO moja_tabela (xxx1, xxx2, xxx3, xxx4) VALUES (
  25. '".$tab[$i]['data-position']."',
  26. '".$tab[$i]['data-shopurl']."',
  27. '".$tab[$i+1]['data-offer-price']."',
  28. '".$tab[$i]['number-shopid']."')");
  29.  
  30.  
  31. }
  32. }
  33. }
  34.  
  35.  


O to cały kod - pobiera warość z wcześniej wymienionych stron określonych w tabeli bazy danych,
następnie używa DOM do pobrania wartości.

Łączy w całość i dodaje do bazy danych
nospor
No jesli tab ma byc oddzielna dla kazdej iteracji, to ja poprostu zeruj

$tab = array();
foreach($html->find('.clasa_wartosci') as $element) {

i po sprawie
winiar789
Nooooo.....narzeszcie....... fachowo exclamation.gif! Panownie gdybym mógł albo wiedział jak i gdzie - stawiam flaszkę smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.