Chtěl bych se zeptat,
Jak odstraním duplicitní názvy, které jsou brány pomocí:
$zzxx = $jedenslug->slug;
echo "$zzxx </br>";
A vypíšu jen unikátní názvy, na každý řádek jeden..?
#2 Kit
Zkráceně tohle: $jedenslug->slug; bere názvy (například)
11-22-63
12-monkeys
16-a-tehotna
1864
2-socky
24-hodin
3-2-1-tucnaci
30-pripadu-majora-zemana
4400
4teens
666-park-avenue
7-deadly-sins
90210-nova-generace
a-to-z
about-a-boy
aftermath
agent-carter
agent-x
agents-of-s-h-i-e-l-d
agentura-jasno
akta-x
alcatraz
alf
alias
alias
allegiance
Jsou li dva názvy stejné, tak aby to vypsalo jen unikátní název...
echo "$zzxx </br>";
Toto vypisuje všechny názvy..
$URL = 'url';
$xmlstring = common::get_curl($URL);//file_get_contents($URL);
$xml = simplexml_load_string($xmlstring, 'SimpleXMLElement', LIBXML_NOCDATA);
foreach ($xml->serial as $jedenslug) {
$nnn1 = $jedenslug->nazev;
$nnn = $nnn1;
$zzxx = array_unique($jedenslug->slug);
$slug = $zzxx;
echo "$zzxx </br>";
#14 Kit
Zkoušel jsem to takto, ale nějak nejde
foreach ($xml->serial as $jedenslug) {
$nnn1 = $jedenslug->nazev;
$nnn = $nnn1;
$zzxx = $jedenslug->slug;
$slug = $zzxx;
//echo "$zzxx </br>";
$pole = array();
if (!in_array($nnn, $pole)) {
array_push($pole, $nnn);
{echo "$nnn </br>";}
}
}
#15 webdorf
Zkus to třeba takhle:
$url = 'url';
$xmlstring = file_get_contents($url);
$xml = simplexml_load_string($xmlstring, 'SimpleXMLElement', LIBXML_NOCDATA);
$nazvy = array();
foreach ($xml->serial as $polozka) {
$nazvy[$polozka->nazev] = $polozka->slug;
}
foreach ($nazvy as $key => $value) {
echo "$key $value<br>";
}
K tomu predchozimu:
... tady schazi cyklem
$zzxx = $jedenslug->slug;
echo "$zzxx </br>";
$zzxx = array_unique($jedenslug->slug);
$slug = $zzxx; echo "$zzxx </br>"
... coz pak vysvetluje, proc tohle hlasi, ze to nemas v array, protoze $jedenslug->slug je string, jen jeden radek z pole. Ten by se sortoval jako pole pismenek a ne pole stringu.
Takze to musis cyklem presunout nejdriv do array a ne vypisovat pres echo.
Ja myslim, ze tam chces spis docilit
$nazvy[$polozka->slug] = $polozka->slug;
---
foreach ($xml->serial as $jedenslug) {
$nnn1 = $jedenslug->nazev;
$nnn = $nnn1;
$zzxx = $jedenslug->slug;
$slug = $zzxx;
//echo "$zzxx </br>";
$pole = array();
if (!in_array($nnn, $pole)) {
array_push($pole, $nnn);
{echo "$nnn </br>";}
}
}
Ty nemas ani tuseni o php, programovani, ze? :) Tak to je forum Prace a zakazky, inzerce.
Vynecham ty php zapisy a zkusim to trochu popsat.
$xml->serial // je nejake pole, ktere vypada treba takto
[nazev => 'tonda', slug => 'pivas'] // [index => hodnota]
Polem se da listovat dvema zpusoby. Bud znas indexy-klice(key) (obvykle ciselne) a nebo prochazis cele pole (obvykle textove indexy).
for (i=0; i<count(pole); i++) // ciselne, index = i, polozka = pole[i]
foreach (pole as key=>value) // textove, index = key, polozka = pole[key] = value
foreach (pole as value) // textove, polozka = value (kdyz nebudes pouzivat indexy pro dalsi php kod)
Takze v zavislosti na case dostanes toto
pole = [nazev => 'tonda', slug => 'pivas']
foreach (pole as value) ...
t = 0: value = 'tonda'
t = 1: value = 'pivas'
Za cyklem zustane jen
t = 2: value = 'pivas'
table = [ [nazev => 'tonda1', slug => 'pivas3'], [nazev => 'tonda2', slug => 'pivas4'] ] foreach (table as row) // databazove { // row['nazev']
// row['slug']
foreach (row as key => value)) {...} }
Prvni foreach ulozi do row = [nazev => 'tonda1', slug => 'pivas3'],.
Druhy foreach uvnitr prvniho cyklu pak z kazdeho radku ziska jmeno sloupce key a hodnotu ve sloupci
---
pole2 = array_unique(pole1); // [array]
jedenslug->slug [string]
Predstav si pole [array] jako kosik jablek a retezec jako jedno jablko. To proste neni totez a php pochopitelne krici chybu.
Kdyz pouziji zapis jako u predchozich prikladu, tak
row = [
'pivas3',
'pivas4'
]
row = array_unique(row); // ok
value = 'pivas3'; // pripadne by se to mohlo chovat jako row = ['p','i','v','a','s','3']; coz ale nechces
value = array_unique(value); // chyba
No, co s tim, sakra? Tak to uloz do pole, ne?
foreach ($xml->serial as $polozka) {
$nazvy[$polozka->nazev] = $polozka->slug;
}
$table = [class]
[nazev: 'tonda', slug: 'pivas'] nebo
[key: 'tonda', value: 'pivas']
$table2 = array();
foreach ($table as $row) {
$table2[$row->nazev] = $row->slug; // nebo
$table2[$row->key] = $row->value;
}
Cyklus vytvori table2 jako
[tonda: 'pivas']
Jenze table vypada treba takto
[nazev: ['tonda', 'kucera'], slug: 'pivas'] // nazev [array], slug [string]
[nazev: 'manas', slug: 'pivas'] // nazev [string], slug [string]
[nazev: , slug: 'pivas'] // nazev [null], slug [string]
[slug: 'pivas'] // nazev [undefined], slug [string]
Takze, pouzit pro tabulku 2 nazev nebylo nejstastnejsi reseni. A je treba to osetrit, prekonvertovat na string nebo cislo. Nebo proste nazev nepouzit a pro oboje pouzit slug
$table2[$row->slug] = $row->slug;
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku