Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Połączenie wartości w tablicy
winiar789
post
Post #1





Grupa: Zarejestrowani
Postów: 130
Pomógł: 0
Dołączył: 15.11.2011

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


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
)
)

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


A co już masz?
Go to the top of the page
+Quote Post
winiar789
post
Post #3





Grupa: Zarejestrowani
Postów: 130
Pomógł: 0
Dołączył: 15.11.2011

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


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
Go to the top of the page
+Quote Post
Pyton_000
post
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


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.
Go to the top of the page
+Quote Post
winiar789
post
Post #5





Grupa: Zarejestrowani
Postów: 130
Pomógł: 0
Dołączył: 15.11.2011

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


Czy jest szansa abyś mi pokazał to na przykładzie bo chyba tego nie rozumiem.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


http://devdocs.io/php/control-structures.for

http://devdocs.io/php/function.count
Go to the top of the page
+Quote Post
winiar789
post
Post #7





Grupa: Zarejestrowani
Postów: 130
Pomógł: 0
Dołączył: 15.11.2011

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


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
)
Go to the top of the page
+Quote Post
Pyton_000
post
Post #8





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


$++

++$i oznacza "najpierw powiększ a potem działaj"
Go to the top of the page
+Quote Post
winiar789
post
Post #9





Grupa: Zarejestrowani
Postów: 130
Pomógł: 0
Dołączył: 15.11.2011

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


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
)
Go to the top of the page
+Quote Post
Pyton_000
post
Post #10





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


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.

Ten post edytował Pyton_000 2.08.2017, 09:55:47
Go to the top of the page
+Quote Post
viking
post
Post #11





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


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.


--------------------
Go to the top of the page
+Quote Post
winiar789
post
Post #12





Grupa: Zarejestrowani
Postów: 130
Pomógł: 0
Dołączył: 15.11.2011

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


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
Go to the top of the page
+Quote Post
Pyton_000
post
Post #13





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


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.
Go to the top of the page
+Quote Post
winiar789
post
Post #14





Grupa: Zarejestrowani
Postów: 130
Pomógł: 0
Dołączył: 15.11.2011

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


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
Go to the top of the page
+Quote Post
nospor
post
Post #15





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
winiar789
post
Post #16





Grupa: Zarejestrowani
Postów: 130
Pomógł: 0
Dołączył: 15.11.2011

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


Nooooo.....narzeszcie....... fachowo exclamation.gif! Panownie gdybym mógł albo wiedział jak i gdzie - stawiam flaszkę smile.gif
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 Aktualny czas: 21.08.2025 - 07:31