przeszukiwanie array

0

witam. mam array taki:

[3] => Array
        (
            [dzienWykonaniaZdjecia] => 20201028
            [plik] => 20201028_204215.jpg
            [timestamp] => 1603914135
            [doPorownania] => 2020-10-28
        )
pph

Jaka funkcja mam wyświetlić tylko te, które maja określoną [doPorownania]?

Bardzo dziękuję za pomoc!
Jakub
2

array_filter

0

Przepraszam moge prosic o jakus konkretniejdzy przyklad zastosowania tej funkcji?

0
<?php

//PAKUJEMY ZDJECIA Z FOLDERU ZE ZDJECIAMI DO TABLICY
// BIERZACY KATALOG W KTORYM BEDZIEMY PRZECHOWYWAC ZROBIONE ZDJECIA
$PathFoto = getcwd();
$PathFoto = $PathFoto."/audioblog_zdjecia";
// OTWIERAMY KATALOG
if ($katalog = opendir($PathFoto))
{
$Index = 0;
/* This is the correct way to loop over the directory. */
// ROZPOCZYNAMY PETLE    
     while (false !== ($entry = readdir($katalog)))
     {
     // badamy rozszerzenie pliku audio bez kropki
     $rozszerzenieZdjecia = substr(strrchr($entry, "."), 1);
     // OBCINAMY FRAGMENT _HDR JESLI TYLKO TAKI WYSTEPUJE
    $entry = str_replace("_HDR", "", $entry);
     // obcinamy .jpg - using str_replace() function 
     $entry = str_replace('.jpg', '', $entry);
     // obcinamy .jpeg - using str_replace() function 
     $entry = str_replace('.jpeg', '', $entry);
     //SPRAWDZIC DOKLADNIE JAKI FORMAT MAMY ZDJEC Z NASZEGO OBECNEGO TELEFONU I PRZYGOTOWAC SIE, ZE ZA JAKIS CZAS MOZEMY MIEC INNY TELEFON GENERUJACY ZUPELNIE INNA NAZWE PLIKU

     // konwertujemy nazwe pliku na date
     // 20191207_095745 (taki format)
     // WYDAJE MI SIE TUTAJ PO PROSTU TRZEBA PODODAWAC WSZYSTKIE MOZLIWE FORMATY DATY JAKIMI NAZWANE SA PLIKI PRZEZ PROGRAM DO ROBIENA FOTEK

// TO PODSTAWA DO UKLADANIA WSZELKICH FORMATOW

// TIMESTAMP
     $dateInfo = date_parse_from_format('Ymd_His', $entry);
     // tworzym timestamp
     $unixTimestamp = mktime(
     $dateInfo['hour'],
     $dateInfo['minute'],
     $dateInfo['second'],
     $dateInfo['month'],
     $dateInfo['day'],
     $dateInfo['year'],
     $dateInfo['is_dst']
     );
     
// NASZ FORMAT DO POROWNANIA
$data2 = new DateTime();
$data2 = date_timestamp_set($data2, $unixTimestamp);
$dataDoPorownania = date_format($data2, 'Y-m-d');
                       
          // spowrotem dodajemy rozszerzenie do pliku tak jak było
          if($rozszerzenieZdjecia == 'jpg')
          {
          $entry = $entry.'.jpg';
          $type = 'image/jpeg';
          }
          if($rozszerzenieZdjecia == 'jpeg')
          {
	      $entry = $entry.'.jpeg';
	      $type = 'image/jpeg';
           }
           
     // dodajemy nowy element tablicy 'day'
     //$dzien = $entry; 
     $dzien = substr($entry, 0, strpos($entry, "_")); 
     //$dzien = substr($entry, 0, strpos($entry, " ")); 
     // ROBIMY TABLICE ZAWIERAJACA NAZWE PLIKU I JEGO UNIX TIMESTAMP		          
     $tablicaZdjecia[$Index] = array('dzienWykonaniaZdjecia' => $dzien,'plik' => $entry, 'timestamp' => $unixTimestamp, 'doPorownania' => $dataDoPorownania);

     // PODWYZSZAMY INDEX BO JEST TO POTRZEBNE DO UTWORZENIA TABLICY        
     $Index++;
     // ZAMYKAMY PETLE        
     }
// ZAMYKAMY KATALOG
closedir($katalog);
}

echo '<pre>';
// DRUKUJEMY TABLICE 
print_r($tablicaZdjecia);
echo '</pre>';

echo 'Znaleziono fotki...<br>';

// przykladowy timestamp
$timestamp = "1595760384";
// zmieniamy timestamp na format
$data = new DateTime();
$data = date_timestamp_set($data, $timestamp);
$dataSformatowana = date_format($data, 'Y-m-d');



// TO NIE DZIALA

// czas wrzucic tu wyssana tablice

print_r(array_filter($tablicaZdjecia, $dataSformatowana));

echo '<pre>';
// testujemy co znaleziono
print_r($arrayPhotosFound);
echo '</pre>';

?>
0

chce sie komus brnac przez ten belkot?

0
function mySearch($var){
 return $var[3] == $dataSformatowana;
}
print_r(array_filter($tablicaZdjecia, "mySearch");

Nie siedzę w phpie, ale według dokumentacji coś takiego powinno być ok. Sprawdź tylko odpowiednie porównywanie stringów oraz czy zmienna $dataSformatowana aby na pewno jest widoczna w funkcji, jak nie to tam trzeba ją utworzyć

0
$doPorownania = "value"
$result = []
Foreach ($element as $item) {
If($item["doPorownania"]==$doPorownania) {
$result[] = $item
}}
Return $result
0
// TEST PRZESZUKANIA TABLICY PETLA FOREACH

$index = 0;

foreach($tablicaZdjecia[doPorownania] as $zdjecie)
{
     If($zdjecie == $dataSformatowana)
     {
         $arrayPhotosFound[$index++] = $zdjecie;
     }
}

echo '<pre>';
     // TEST
     print_r($arrayPhotosFound);
echo '</pre>';

czy ktos w tym widzi jakies bledy?

1

Generalnie piszesz KOD proceduralny co jest błędem samym w sobie.

0 użytkowników online, w tym zalogowanych: 0, gości: 0