Zenobiusz
24.08.2020, 12:46:10
Szukam metody na czytanie ciągu liczb z pliku tekstowego a nie serwera. Próbowałem na zmiennych ale nic nie wychodziło np.
$la = "1,2,1,2,3,4";
$zbior = array($la);
$jaka = 1;
<?php
$zbior = array(_czytanie liczb z pliku_);
$jaka = 1;
function szukana($liczby, $wystepowanie)
{
$suma=array();
foreach($liczby as $co => $ile)
{
if ($ile == $wystepowanie)
{
$suma[] = $ile;
}
}
return count($suma);
}
$get = szukana($zbior, $jaka);
echo 'wartość: ' . $jaka . ' wystepuje: ' . $get;
?>
viking
24.08.2020, 12:56:53
Zenobiusz
25.08.2020, 09:18:27
Nie działa w żadnym przypadku:
$zbior = array(file_get_contents('testfile.txt'));
$jaka = 1;
oraz:
$la = file_get_contents('testfile.txt');
$zbior = array($la);
$jaka = 1;
nospor
25.08.2020, 09:26:27
A patrzyles co ci zwraca
file_get_contents('testfile.txt');
?
print_r(file_get_contents('testfile.txt'));
Zenobiusz
25.08.2020, 10:10:25
print_r(file_get_contents('testfile.txt'));
zwraca ciąg liczb zapisany w pliku tekstowym, ale nie wyświetla wystąpień liczby 1 czyli $jaka=1
natomiast przy: file_get_contents('testfile.txt');
wartość: 1 wystepuje: 0 a powinno byc 3 bo jedynek jest 3 (1, 2, 4, 1, 5, 10, 11, 15, 23, 1)
nospor
25.08.2020, 10:12:14
a ciag liczbowy to poprostu:
2,3,5,7,6
?
No to zrob explode na wyniku i bedziesz mial swoja tablice
viking
25.08.2020, 10:16:59
To jeśli chcesz w ten sposób to czemu po prostu nie zrobisz include/require?
nospor
25.08.2020, 10:23:38
@viking ale co mu da require skoro plik zawiera
1, 2, 4, 1, 5, 10, 11, 15, 23, 1
?
@Zenobiusz jak mowilem: file_get_contents a potem explode po przecinku (w sumie po przecinku i spacji bo widze masz spacje po kazdym przecinku) i masz tablice na ktorej mozesz pracowac
viking
25.08.2020, 10:28:51
Bo zakładam że ten plik powinien docelowo zawierać tablicę ale jeszcze tego nie ogarnia. Ale mogę się mylić.
Zenobiusz
25.08.2020, 10:55:11
To napisz czego mogę nie ogarniać

Może to jest właśnie to

Cytat(nospor @ 25.08.2020, 11:12:14 )

a ciag liczbowy to poprostu:
2,3,5,7,6
?
No to zrob explode na wyniku i bedziesz mial swoja tablice
Explode też nie działa
$lczb = '1, 2, 4, 1, 5, 10, 11, 15, 23, 1';
$la = explode(" ", $lczb);
$zbior = array($la);
$jaka = 1;
pojawia się:
wartość: 1 wystepuje: 0
Tylko mi chodzi o czytanie z pliku txt w którym jest ciąg liczb i to z tego ciągu ma wyszukać ilośc występowanej liczby jeden.
nospor
25.08.2020, 11:16:58
Toc mowilm ze explode ma byc po przecinku i spacji czyli po takim ciagu ktory oddziela liczby...
viking
25.08.2020, 11:21:37
https://www.php.net/manual/en/function.substr-count.phpif ($liczby){
}
Jeśli w piku będzie np 1,2,11,12 to oczywiście explode.
nospor
25.08.2020, 11:24:11
@viking ale twoj kod lyknie tez 11
viking
25.08.2020, 11:28:37
Tak, wiem dopisałem mu w oryginalnym poście.
A te dane kto zapisuje, masz na nie wpływ żeby zapisać od razu jako tablicę czy np json?
Zenobiusz
26.08.2020, 08:58:02
Cytat(viking @ 25.08.2020, 12:28:37 )

Tak, wiem dopisałem mu w oryginalnym poście.
A te dane kto zapisuje, masz na nie wpływ żeby zapisać od razu jako tablicę czy np json?
Zapisuje od razu. Sprawdzę czy to wszystko działa
Warning: substr_count(): Empty substring in
nospor
26.08.2020, 09:00:18
Zero samodzielnosci.... jak wol masz napisane ze przekazujesz pusty string. TO sprawdz co zawieraja twoje zmiennej ktore przekazujesz do substr_count
A dwa przeciez ci juz powiedziano ze metoda substr_count bedzie zle dzialac gdy bedziesz mial liczby ala 11,12,13 itd a z wczesniejszych postow wynika ze masz. Czytasz w ogole co sie tutaj pisze?
Zenobiusz
26.08.2020, 12:26:29
Nie mam podwójnych liczb. Mam pojedyńcze a błąd nadal występuje.
nospor
26.08.2020, 12:36:37
Co do bledu to ci zdaje sie juz napisalem co masz zrobic
Cytat
Nie mam podwójnych liczb
To po co w przykladach wczesniej podawales ze masz? (pytanie retoryczne)
Zenobiusz
26.08.2020, 12:39:32
Bo zmieniłem według waszych zaleceń.
viking
26.08.2020, 12:58:59
Dodałeś tam zmienną jaka czy nie?
Zenobiusz
26.08.2020, 13:00:17
<?php
$liczby = file_get_contents('testfile.txt');
$zbior = array();
$jaka = 1;
function szukana($liczby, $wystepowanie)
{
if ($liczby)
{
sprintf('Wartość: %d występuje: %d', $jaka, substr_count($liczby, $jaka));
}
$suma=array();
foreach($liczby as $co => $ile)
{
if ($ile == $wystepowanie)
{
$suma[] = $ile;
}
}
return count($suma);
}
$get = szukana($zbior, $jaka);
echo 'wartość: ' . $jaka . ' wystepuje: ' . $get;
?>
nospor
26.08.2020, 13:05:37
Chyba pobiles rekord w liczbe bledow w tak krotkim kodzie....
1) Zacznij wkoncu uzywac BBCODE
2) Wlacz wyswietlanie bledow a czesc z nich zobaczysz na ekranie
3) I generalnie zastosuj sie do tego
Temat: Jak poprawnie zadac pytanie oraz przygotowac srodowisko pracybo juz tyle czasu na forum a ciagle nie potrafisz poprawnie zadac pytania
gino
26.08.2020, 13:24:07
no i jak Ci się udało wepchnąć zmienną lokalną
Kod
$jaka
do funkcji to ja nie wiem
gino
nospor
26.08.2020, 13:36:17
@gino to miedzy innymi by pokazalo wyswietlanie bledow o ktorym pisalem
gino
26.08.2020, 13:41:53
to pokazuje, jak nie ma podstawy podstaw języka, jak nie pokażesz palcem, to nawet gdyby raportowanie błędów było załączone nic nie da.
gino
nospor
26.08.2020, 13:52:28
Tylko twoja odpowiedz o zmiennej lokalnej tez nie wiele wiecej daje

Wiec juz jak tak bardzo chciales wytlumaczyc, to rob to dobrze
gino
26.08.2020, 15:51:29
@nospor no dobrze, postaram się
1 plik jest tekstowy, nawet jak wrzucisz liczby do tablicy będą typu string, u Ciebie zmienna $jaka typu int
2 nie możesz używać zmiennych lokalnych wewnątrz funkcji, ich wartość przekazujesz przez atrybuty funkcji, którymi operujesz w ciele funkcji podczas jej definicji
3 jak napisał nospor dobre środowisko pracy ułatwia bardzo wiele
poniżej kod, który robi co chcesz:
Kod
$zbior = explode(',',file_get_contents('testfile.txt'));
$jaka = 1;
function serch_value($arr, $val)
{
$count_num = 0;
foreach ($arr as $key) {
if((int)$key === $val) {
$count_num++;
}
}
return $count_num;
}
$get = serch_value($zbior, $jaka);
funkcja zwraca ilość występowań danej liczby.
gino
Tomplus
26.08.2020, 19:45:04
Nie lepiej użyć gotowej funkcji
count_chars()
Zenobiusz
27.08.2020, 09:59:45
TEn kod u góry działa i jest prawidłowy wystarczy sprawdzić:
$zbior = array(1,11,12,13,1);
$jaka = 1;
Nie wiem co wy od niego chcecie ?
nospor
27.08.2020, 10:14:56
A kto to cos od niego chce? Jedynie Tomplus zaproponowal jeszcze inne rozwiazanie. Wiec czego ty od nas chcesz?
Zenobiusz
27.08.2020, 10:17:39
Pomocy w postaci rozwiązania, ale jakoś to słabo widze
nospor
27.08.2020, 10:19:24
No przeciez dostales. Nawet sam napisales ze dziala
Cytat
TEn kod u góry działa i jest prawidłowy wystarczy sprawdzić:
To o co ci jeszcze chodzi?
Zenobiusz
27.08.2020, 10:44:24
Chodzi mi o mój kod.
Cytat(Tomplus @ 26.08.2020, 20:45:04 )

Nie lepiej użyć gotowej funkcji
count_chars()jakiś przykład ?
Dziękuje GINO.
gino
27.08.2020, 11:55:46
count_chars w zależności od zastosowanego opcjonalnego atrybutu (dla przykładu 1) zwróci tablicę w postaci znak_łaćucha => ilość_wystąpień, ale dla Twoich liczb będzie liczył wszystkie wystąpienia czyli "2,22" pokażę, że jest 3=>2
gino
edit miało być: 2=>3
Zenobiusz
27.08.2020, 12:16:55
Dobra Panie i Panowie. Dziękuje wszystkim za POMOC i udział w dyskusji. Temat można zakończyć. POZDRAWIAM.
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.