plus lub minus w zmiennej jak to zrobić ?

0

jak dodać plus lub minus do zmiennej tak aby później jej użyć np

echo $wynik = 1 $plus 1;

0
$wynik = "wynik";
$plus = "+";
eval("echo $wynik.\" = \".(1 $plus 1);");

https://ideone.com/5THXof

0

a da się to zrobić w inny sposób ?

chciałbym aby sam plus był w zmiennej.

2

Polecam najpierw napisać do czego Ci to jest potrzebne. Mam wrażenie, że chcesz zrobić coś dziwnego. Czyżbyś chciał napisać kalkulator?

2

Nie bardzo rozumiem pytanie i nie wiem, do czego ci to.
Możesz np. napisać własną funkcję

funciton echo_znak($liczba) {
      if ($liczba<0)  {echo($liczba);}
  elseif ($liczba>0)  {echo("+", $liczba);}
  elseif ($liczba==0) {echo(0);}
}
2

Chcesz utworzyć zmienną trzymającą referencję do operatora dodawania? Po co?

Jak już chcesz coś takiego zrobić żeby nie wiem, zasubskrybować wspierane operacje w jakimś słowniku czy coś, to już zdrowiej Ci będzie opakować te operatory w jakieś metody z obsługą błędów etc. Te już zasubskrybujesz bez problemu i bez robienia takich dziwactw ;)

0

Co chcesz zrobić?
Jeśli chcesz wyodrębnić "logikę dodawania" czy "logikę odejmowania" tak, żeby móc tę logikę "uruchomić" w dowolnym momencie (np. do zrobienia kalkulatora), to najwygodniej pewnie będzie wydzielić oddzielne funkcje do każdej operacji i uruchamiać w odpowiednich momentach. Kod w JavaScript:

function add(a, b) {
   return a + b;
}

function substract(a, b) {
   return a - b;
}

// tutaj ustalasz sobie operację, zapewne bardziej dynamicznie, niż w tym przykładzie.
let operation = add; 

alert(operation(10, 20));  // 30

Przypuszczam, że w PHP można by coś podobnego zrobić.

0

chyba nie sprecyzowałem pytania

chodzi o to żę mam notepad ++ i tam mam 120 tys linijek kodu

i chciałbym zamienić wszystkie + na $plus a - na $minus

3

W takim razie czy wiesz ze jest tam (w notepad++) taka opcja "znajdź i zamień wszystkie". Plik mający 120 tysięcy linii kodu to śmietnik. Wywal go i zajmij się czymś ciekawszym. Mówię to szczerze i bez żadnej złośliwości.

BTW. To co teraz napisałeś i tak nie odpowiada na pytanie - po co masz to zrobić?

1
Michal Bloch napisał(a):

i chciałbym zamienić wszystkie + na $plus a - na $minus

I z czym masz problem? Bo chyba nie z tym?

$plus = "+"

$dzialanie = "2 $plus 2 = 4"

Przepuszczasz swoje źródła przez jakiś sed albo odpowiednik, ew. opcja znajdź i zamień (zwykle pod Ctrl+R lub Ctrl+H) i przejeżdżasz regexpem po pliku. Znajdujesz wszystko, co jest zamknięte w cudzysłowie (żebyś sobie faktycznego dodawania w kodzie nie pozamieniał) i zawiera znak + po czym zastępujesz + przez $plus w znalezionych wyrażeniach.

0

tak własnie robię zamieniam wszystkie ale wtedy zamiast obliczyć dane działanie to po prostu je wyświetla w stanie surowym czyli zamiast 2 to wyświetla 1+1

0

Nadal nie napisałeś, po co chcesz to zrobić. Jak dla mnie w obecnej chwili to co próbujesz zrobić jest bez sensu. Co Ci to da że zmienisz plusy na zmienną?

0

to jest po prostu kod który później będzie kompresowany ale nie jest ważne działanie tego kodu
tylko jak to zrobić by wyświetlić w danym miejscu $plus lub $minus tak aby działał jak normalnie wpisany operator.

0

Nadal nie piszesz czemu ma służyć ta zmiana. Poza tym jakie znaczenie ma fakt, że kod ma być potem kompresowany? Moim zdaniem, tak obszerny kod powinien być poddany procesowi refaktoryzacji, a nie kompresji.

0

po prostu aby w odpowiednim momencie w miejscu $plus był plus a innym razem w $plus był minus nie chce powielać kodu o kolejne linie.

0

Do takich rzeczy lepiej jest jednak już wykorzystać funkcje, tak jak mówili przedmówcy. Jeśli nie chcesz bawić się w funkcję, to przedmówcy też opisali Ci dokładnie co należy zrobić. Zwróciłbym tylko uwagę na to, by w miarę możliwości unikać używania funkcji eval.

0
Michal Bloch napisał(a):

po prostu aby w odpowiednim momencie w miejscu $plus był plus a innym razem w $plus był minus nie chce powielać kodu o kolejne linie.

WTF :D

Jeszcze powiedz mi, że te 120k linii kodu to w dużej mierze linia po linii jakieś zahardkodowane stringi do ewaluowania, w których teraz chcesz podmieniać operator, żeby zaoszczędzić sobie copypasty...

0

@superdurszlak: egzakli :) jaki kod musi tam istnieć by zmienić globalnie operacje dodawania na odejmowanie? OP nadal nie chce przedstawić problemu i opisać co to za kod... A my chyba już nic więcej nie wyczarujemy tutaj.

1

120 tysięcy linijek kodu brzmi dla mnie dosyć dziwnie. Bardzo możliwe, że to nie powinien być kod, tylko zwykły zbiór danych, który byś później sobie przetwarzał. Niemniej, dla problemu postawionego jak powyżej, gdzie potrzebne są dwie opcje, sugeruję zrobić tak:

plik_plus.php

$x = $y + $z;
(i tak 120 tysięcy razy).

plik_minus.php

$x = $y - $z;
(i tak 120 tysięcy razy).

A później w innym pliku zależnie od wartości zmiennej $operator będziesz sobie inkludował wybraną wersję.

0

chodzi o to żę mam notepad ++ i tam mam 120 tys linijek kodu

i chciałbym zamienić wszystkie + na $plus a - na $minus

W takim razie możesz przelecieć zamieniajką, najlepiej taką, która działa na wyrażeniach regularnych. A jeszcze lepiej: taka, która rozumie/parsuje kod PHP i możesz inteligentnie zamienić. No i tak, nawet z automatyczną zamieniajką, raczej musisz weryfikować co robisz, i sprawdzić każdą linijkę, więc pewnie ci to zajmie z kilka godzin.

Chociaż w sumie dalej nie rozumiem w zasadzie co chcesz zrobić, czemu ma służyć to zamienianie. Pomyliłeś się we wzorach, że chcesz plus na minus zamienić?

A poza tym:
Naprawdę 120 tysięcy w jednym pliku? Co to za projekt? Notepad++ daje radę to edytować? (niektóre edytory nie dają rady przy dłuższych plikach). Ja uciekałbym od czegoś takiego, bo to straszna niechlujność (wnioskuję, że to nie ty robiłeś, no chyba, że robisz ten projekt przez jakieś kilka lat, i tak ci się nazbirało to 120 tysięcy).

Poza tym - poza tym, że w jednym pliku, to musi być strasznie słabo napisany, jeśli żeby zmienić znak czegoś tam w obliczeniu z plusa na minus, musisz zmieniać w iluś miejscach. Swoją drogą może by dało się to wyłapać na wyższym poziomie?

To jest jakieś strasznie karkołomne zadanie, i niestety, najlepiej pewnie uciekać z takiego projektu, albo przepisać od nowa (tyle, że przepisywanie od nowa to pewnie byłyby miesiące pracy).

2

Naprawdę 120 tysięcy w jednym pliku? Co to za projekt? Notepad++ daje radę to edytować?

Notepad++ daje radę edytować pliki po kilkaset MB, więc taki na kilkanaście to dla niego pikuś.

wnioskuję, że to nie ty robiłeś, no chyba, że robisz ten projekt przez jakieś kilka lat, i tak ci się nazbirało to 120 tysięcy

Jest jeszcze opcja, że to może być wygenerowany kod.

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