PHP'de bir değişkenin boş olup olmadığı nasıl kontrol edilir. PHP Hile Sayfası: FALSE, NULL ve ilgili değerler. is_null() işlevi ve dil, isset() ve empty() oluşturur

  • 03.11.2019

Dizelerle çalışırken, dizenin boş olup olmadığını kontrol etmeniz gerekiyorsa, acemi programcılar genellikle işlevi kullanır. strlen(). Bu işlev oldukça hızlıdır, çünkü herhangi bir hesaplama yapmaz, ancak zval'de bulunan dize uzunluğunun zaten bilinen değerini döndürür (PHP, değişkenleri depolamak için bir C yapısı kullanır). Ama yine de, çünkü strlen() bir fonksiyondur, biraz yavaştır çünkü onu çağırmak için küçük harf ve hash tablosunda arama gibi birkaç adım gerekir. Bazı durumlarda, kullanarak kodunuzu hızlandırabilirsiniz. boş()..., Ayrıca boş() yine de biraz optimize edilebilir.

bir örnek alalımÖrneğin görüntü yolu kontrolü, işlev yolun boş olup olmadığını kontrol eder, ardından onu başka bir yolla değiştiririz, örneğin "images/noimage.jpg".

Ve böylece tüm görev, string türünde bir değişkenin boş olup olmadığını kontrol etmeye gelir. 4 yol deneyelim:

  • if(strlen($img_path)>0)
  • if($img_path(0))
  • if(boş($img_path))
  • ve bitirmenin bir yolu daha.

Ve böylece ilk şekilde yazıyoruz:

function check_image_path($img_path ) ( if (strlen ($img_path ) >0 ) ( $img_path = "images/noimage.jpg" ; ) return $img_path ; )

hadi test edelim, testin ortalama süresi 1.43795800209 sn.

Biraz daha düşününce... Bir dizgenin tamamına değil, bir kerede bir dizgenin ilk karakterine erişebilirsiniz. İlk karakter varsa, dize boş değildir. Bir dizedeki ilk karakter "0" ile numaralandırılır.

fonksiyon check_image_path($img_path ) ( if ($img_path ( 0 ) ) ( $img_path = "images/noimage.jpg" ; ) $img_path döndür; )

alınan ortalama test süresi 1.19431300163 sn., oynanan zamanın %17'si

Şimdi empty() ile yazmaya çalışalım:

fonksiyon check_image_path($img_path ) ( if (empty ($img_path ) ) ( $img_path = "images/noimage.jpg" ; ) return $img_path ; )

alınan ortalama test süresi 1.1341319084 sn., önceki örnekten kazanılan zamanın %5'i

Şimdi üstümüzdeki sondan bir önceki ve son örneğe bakın. Bakalım nasıl birleştirilebilir. düşünün... nasıl daha fazla optimize edebilirsiniz?

function check_image_path($img_path ) ( if (empty ($img_path ( 0 ) ) ) ) ( $img_path = "images/noimage.jpg" ; ) return $img_path ; )

alınan ortalama test süresi 1.07465314865 sn. ve yine zamanın% 5'ini kazandı ...

Nasıl çalışır ve neden daha hızlıdır. Ve burada $img_path(0) ilk karakteri döndürür... ve ardından işlevi boş() boş bir dize olup olmadığını kontrol eder... önceki örnekten farkı, işleve tüm dizeye değil yalnızca bir karakterin iletilmesidir. Böylece ilk örnekten sonuncuya kadar kazandık 25% zaman.

PHP'de FALSE ve NULL değerleri ve bunlarla ilişkili değerler diğer dillerde normal olandan farklıdır ve kendilerine ait belirgin olmayan özelliklere sahiptir.
Makale bu özellikleri tartışıyor.
Yeni başlayanlar için bu, tüm resmin görünürlüğü için, deneyimli okuyucular için - bazı nüanslar kafalarından kayarsa hafızayı tazelemek için yararlı olabilir.

If ifadelerinde YANLIŞ

PHP belgelerine göre, aşağıdaki değerler boolean olarak yayınlandıktan sonra YANLIŞ:
  • boole değerinin kendisi YANLIŞ
  • boş dize ("") ve dize "0" .
  • boş dizi (dizi) - dizi().
  • sıfır üye değişkenli bir nesne (yalnızca PHP 4, bu makalede ele alınmamıştır)
  • özel boş değer (ayarlanmamış değişkenler dahil)
  • SimpleXML nesneleri (bu makalede ele alınmamıştır)
Bu, bu tür değerler koşula iletilirse:
if (...) echo "1"; başka yankı "0";
sonra "0" dizisi görüntülenecektir.

Değişkenin değeri set edilmemişse (unset edilmemiş), o zaman bir uyarı da verilebilir. Koşuldaki uyarının değişkenin önüne @ yazılarak kaldırılabileceğini hatırlayın.

Örneğin:

Eğer (@$undefVar) (…)
Ancak @ kullanmalısınız, yalnızca aşırı durumlarda, iyi düşündüğünüzde ve başka uygun seçenek olmadığında. isset() işlevine bakın.

is_null() işlevi ve dil, isset() ve empty() oluşturur

is_null() yalnızca herhangi bir değer atanmamış veya NULL değeri atanmış değişkenler için TRUE değerini döndürür.
isset(), is_null() ile karşılaştırıldığında bire bir zıt boolean değerleri döndürür.
Değişkene bir değer atanmamışsa, is_null() ayrıca herhangi bir uyarı vermeyen isset()'in aksine bir "Tanımsız değişken" uyarısı verir.
Bir değişkenin değerini kaldırmak için unset() işlevini kullanabileceğinizi hatırlayın. Bir değişkenin değerini okumaya çalışırken derleyici uyarılarını önlemek için bu amaç için NULL atayabilirsiniz.

Değişkenlerin aksine, sabitlerle çalışmak için tanımlı() yapısını kullanmanız gerektiğini unutmayın.

dizi gösterimi

Yanlış sabitlerin dize temsilini düşünün.
Örneğin, birleştirme sırasında değerler aşağıdaki tabloda gösterilen aşağıdaki dizelere dönüştürülür:

Dizelere dönüştürme konusu, resmi web sitesinde Dizeye dönüştürme paragrafında daha ayrıntılı olarak açıklanmaktadır.

Karşılaştırma Operatörleri

Karşılaştırma operatörlerine geçelim.
Tüm yanlış değerler, "==" operatörü kullanılarak FALSE ile karşılaştırıldığında beklendiği gibi true değerini döndürür.
Ancak yanlış dize sabitlerini birbiriyle karşılaştırırken burada geçişliliğe güvenmemek gerekir.
İşte yanlış değerleri karşılaştırmak için eksiksiz bir tablo (artı, " != " operatörü kullanılarak karşılaştırıldığında, gerçek bir değer döndüren tablonun öğelerini belirtir:

$undef, bir değer atanmamış bir değişkendir

Tablodan bazı hoş sonuçlar çıkarılabilir:
1. Yalnızca dizeleri kullandığımızı biliyorsak, onları güvenle karşılaştırabiliriz ve "" (boş bir dize) "0" 'a eşit olacağından endişe duymayız.
2. Diziler hiçbir zaman dizilere, tam sayılara ve gerçek sayılara eşit değildir.

Farklı yanlış sabitlerin türü farklı olduğundan, aralarında ayrım yapmak için bir çift operatör kullanabilirsiniz === ve!== .
=== operatörü, tüm false değer çiftleri için false döndürür.
Yalnızca birinin NULL olarak ayarlandığı ve diğerinin herhangi bir değere ayarlanmadığı bağımsız değişkenler için true değerini döndürür.

NULL değişkenler ve tanımsız değişkenler arasındaki fark

=== operatörü, NULL değerli değişkenler ve bir değer atanmamış değişkenler dışında tüm sahte değerler arasında ayrım yapmanızı sağlar.

Bu tür değişkenler, get_defined_vars() işlevi kullanılarak ayırt edilebilir.

$var değişkenine bir değer atanıp atanmadığını belirlemeniz gerekiyorsa, bunun için aşağıdaki kod parçası kullanılabilir:
if (array_key_exists("var", get_defined_vars())) ( echo "var tanımlı"; // $var NULL olarak atanır) else ( echo "var tanımlı DEĞİL"; // $var tanımlı değil veya unset($) var) olarak adlandırıldı)

sonuçlar

PHP'de iki yanlışın eşit olmayabileceğini ve ilk bakışta farklı görünen değişkenlerin karşılaştırıldığında aynı çıkabileceğini her zaman aklınızda bulundurmalısınız. Bu tür sürprizlerden kaçınmak için === ve !== operatörlerini kullanabilirsiniz.

Dizilerle çalışırken sürprizlerden kaçınmak için değerleri garantili farklı indekslere dönüştürmek için bir fonksiyon yazabilirsiniz. Bundan sonra dizinin elemanlarına ancak onun yardımı ile erişilebilir. Bu, programı yavaşlatabilir, ancak sürprizlerden kaçınmaya yardımcı olacaktır.

Modern programlama, uzun ve başarılı bir şekilde türlenmemiş değişkenleri manipüle etti. Bir değişkenin tipi önceden atlanabilir ve program yürütülürken değiştirilebilir.

Bu kavram, genel programlama paradigmasında ana kavram haline geldi. Programlama çağının en başında, aynı temel kesinliğe sahip diller, programcının değişkenleri önceden bildirmesini ve bunlara kesinlikle yasa dışı hiçbir şeyin atanmamasını sağlamasını gerektiriyordu. Bir değişkenin türünü değiştirdiği gerçeği, ne programların ne de programlama dillerinin daha önce bir fikri yoktu.

Boş ve var olmayan hakkında

PHP'nin boş() işlevi isset() işlevinin tersidir ve bazı kullanım özellikleri vardır. Değişken yoksa, ilk fonksiyon buna olumlu yanıt verir ve sonucu doğrudur, ikincisi olumsuz, yani değeri yanlış olur.

Tanım olarak isset(), bir değişkenin varlığını kontrol etmek için tasarlanmıştır. Değişkenin ne ve nasıl atandığı önemli değildir, asıl mesele onun var olması ve unset() işlevi tarafından yok edilmemesidir. isset() işlevinin sonucu pozitif - doğru olacaktır. $iVar = 0; o zaman isset($iVar) true olur, ancak empty($iVar) da true olur.

İlk durumda, sonuç, değişkenin var olduğu anlamına gelir, ikinci durumda, değişken boştur, yani bir dize ("0") veya bir sayı olsun, herhangi bir biçimindeki "0" değeri ( kesirli - 0.0 veya tamsayı - 0) yine de: boş($iVar) doğru olacaktır.

Güvenlik ve kontrol hakkında

Uygulama, yazılmamış dillerin programcıya çok daha fazla özgürlük verdiğini gösteriyor, ancak algoritma üzerinde çalışma tutumunun daha sorumlu olduğu varsayılıyor.

PHP, iyi kurulmuş semantiği koruyan, az sayıda hata içeren, ancak dikkatli dikkat gerektiren modern bir sözdizimi sunar. Örneğin, herhangi bir işlevi çağırmak, belirli sayıda parametre gerektirir.

Bir fonksiyon çağırırken, tüm parametreleri iletmek gerekli değildir, sadece önemli bir kısmını iletebilirsiniz. İşlev, tüm parametrelerin varlığını ve varlığını kontrol etmelidir. Eksik veya yanlış değerlere sahip olanlar normal bir forma getirilmeli, istenen değerler atanmalıdır.

Bu bağlamda, PHP boş() işlevi esastır. İfade:

$a = "1;2" + 20

21 değerini $a değişkenine atayacaktır, çünkü ifadenin ilk kısmı 1 olarak temsil edilecek ve ikinci kısım 20 olacaktır.

Sonuç, sayı türünde olacaktır ve PHP empty($a) işlevi false döndürür, yani $a boş değildir.

Bu bağlamda, bir işleve sahip olmak:

funcTest($a ​​​​=0, $b = 20)

Çağrıldığında:

$res = funcTest($aVal, $bVal)

istediğiniz şeye sahip olacak, yani işlevin sonucu. Ve çağrıldığında:

  • $res = funcTest($aDeğer. $bDeğer)

işlev gövdesi "$aVal . $bVal" değerine sahip yalnızca bir parametre alır ve büyük olasılıkla bu parametre bir karakter dizesi olarak yorumlanır.

nesneler ve diziler için PHP boş()

Dilin sözdizimi, nesneler ve dizilerle çalışmak için yeterli sayıda yapıya ve işleve sahiptir, ancak bunların var olup olmadığını ve bir değerin varlığını kontrol etme açısından değişkenlerden özel bir fark yoktur.

PHP boş (dizi) - boş (basit değişken) çağırmaya eşdeğer. Ancak, nesnelerle ilgili çok önemli hususlar vardır. Bir nesnenin varlığını (isset) kontrol etmeye gelince, soru pek mantıklı değil. PHP'nin boş() işlevi söz konusu olduğunda, kullanışlılığı sorgulanmaya devam etmektedir.

Nesne yönelimli programlama mantığına göre, bir nesnenin kendi içeriği ve kendi yöntemleri vardır. Dilin sözdiziminin bir parçası olsa bile, boş olup olmadığını yalnızca nesnenin kendisi söyleyebilir, ancak üçüncü taraf işlevi değil.

Nesne ve onun boş() işlevi

Bu basit ama meşru temelde, her nesne kendi "boşluk" anlayışı bağlamında değerlendirilmelidir. Örneğin, "Personel" nesnesinin uygulanması "Çalışan" kayıtlarından oluşur. Ancak tek bir çalışan yoksa, "Personel" de her zaman potansiyel çalışanların pozisyonları için seçenekler vardır.

PHP'nin boş nesne işlevini burada hangi düzeyde kullanmalı? "Personel" düzeyinde, tek bir çalışan olmasa bile her şey var. "Çalışan" düzeyinde, nesne tamamen doldurulmamış olsa bile zaten oradadır. Ve tamamen doldurulmamış bir nesne, boş bir nesneye atfedilebilir. Kadro masasına hiçbir faydası yoktur.

Seçilen programlama stiline bağlı olarak, PHP'nin boş() ve isset() işlevleri, güvenli ve güvenilir bir algoritma oluşturmak için çok önemlidir, ancak nesneler için içeriği tarafından tanımlanan kendi boş() sürümünüze sahip olmak yine de daha iyidir.

PHP'de FALSE ve NULL değerleri ve bunlarla ilişkili değerler diğer dillerde normal olandan farklıdır ve kendilerine ait belirgin olmayan özelliklere sahiptir.
Makale bu özellikleri tartışıyor.
Yeni başlayanlar için bu, tüm resmin görünürlüğü için, deneyimli okuyucular için - bazı nüanslar kafalarından kayarsa hafızayı tazelemek için yararlı olabilir.

If ifadelerinde YANLIŞ

PHP belgelerine göre, aşağıdaki değerler boolean olarak yayınlandıktan sonra YANLIŞ:
  • boole değerinin kendisi YANLIŞ
  • boş dize ("") ve dize "0" .
  • boş dizi (dizi) - dizi().
  • sıfır üye değişkenli bir nesne (yalnızca PHP 4, bu makalede ele alınmamıştır)
  • özel boş değer (ayarlanmamış değişkenler dahil)
  • SimpleXML nesneleri (bu makalede ele alınmamıştır)
Bu, bu tür değerler koşula iletilirse:
if (...) echo "1"; başka yankı "0";
sonra "0" dizisi görüntülenecektir.

Değişkenin değeri set edilmemişse (unset edilmemiş), o zaman bir uyarı da verilebilir. Koşuldaki uyarının değişkenin önüne @ yazılarak kaldırılabileceğini hatırlayın.

Örneğin:

Eğer (@$undefVar) (…)
Ancak @ kullanmalısınız, yalnızca aşırı durumlarda, iyi düşündüğünüzde ve başka uygun seçenek olmadığında. isset() işlevine bakın.

is_null() işlevi ve dil, isset() ve empty() oluşturur

is_null() yalnızca herhangi bir değer atanmamış veya NULL değeri atanmış değişkenler için TRUE değerini döndürür.
isset(), is_null() ile karşılaştırıldığında bire bir zıt boolean değerleri döndürür.
Değişkene bir değer atanmamışsa, is_null() ayrıca herhangi bir uyarı vermeyen isset()'in aksine bir "Tanımsız değişken" uyarısı verir.
Bir değişkenin değerini kaldırmak için unset() işlevini kullanabileceğinizi hatırlayın. Bir değişkenin değerini okumaya çalışırken derleyici uyarılarını önlemek için bu amaç için NULL atayabilirsiniz.

Değişkenlerin aksine, sabitlerle çalışmak için tanımlı() yapısını kullanmanız gerektiğini unutmayın.

dizi gösterimi

Yanlış sabitlerin dize temsilini düşünün.
Örneğin, birleştirme sırasında değerler aşağıdaki tabloda gösterilen aşağıdaki dizelere dönüştürülür:

Dizelere dönüştürme konusu, resmi web sitesinde Dizeye dönüştürme paragrafında daha ayrıntılı olarak açıklanmaktadır.

Karşılaştırma Operatörleri

Karşılaştırma operatörlerine geçelim.
Tüm yanlış değerler, "==" operatörü kullanılarak FALSE ile karşılaştırıldığında beklendiği gibi true değerini döndürür.
Ancak yanlış dize sabitlerini birbiriyle karşılaştırırken burada geçişliliğe güvenmemek gerekir.
İşte yanlış değerleri karşılaştırmak için eksiksiz bir tablo (artı, " != " operatörü kullanılarak karşılaştırıldığında, gerçek bir değer döndüren tablonun öğelerini belirtir:

$undef, bir değer atanmamış bir değişkendir

Tablodan bazı hoş sonuçlar çıkarılabilir:
1. Yalnızca dizeleri kullandığımızı biliyorsak, onları güvenle karşılaştırabiliriz ve "" (boş bir dize) "0" 'a eşit olacağından endişe duymayız.
2. Diziler hiçbir zaman dizilere, tam sayılara ve gerçek sayılara eşit değildir.

Farklı yanlış sabitlerin türü farklı olduğundan, aralarında ayrım yapmak için bir çift operatör kullanabilirsiniz === ve!== .
=== operatörü, tüm false değer çiftleri için false döndürür.
Yalnızca birinin NULL olarak ayarlandığı ve diğerinin herhangi bir değere ayarlanmadığı bağımsız değişkenler için true değerini döndürür.

NULL değişkenler ve tanımsız değişkenler arasındaki fark

=== operatörü, NULL değerli değişkenler ve bir değer atanmamış değişkenler dışında tüm sahte değerler arasında ayrım yapmanızı sağlar.

Bu tür değişkenler, get_defined_vars() işlevi kullanılarak ayırt edilebilir.

$var değişkenine bir değer atanıp atanmadığını belirlemeniz gerekiyorsa, bunun için aşağıdaki kod parçası kullanılabilir:
if (array_key_exists("var", get_defined_vars())) ( echo "var tanımlı"; // $var NULL olarak atanır) else ( echo "var tanımlı DEĞİL"; // $var tanımlı değil veya unset($) var) olarak adlandırıldı)

sonuçlar

PHP'de iki yanlışın eşit olmayabileceğini ve ilk bakışta farklı görünen değişkenlerin karşılaştırıldığında aynı çıkabileceğini her zaman aklınızda bulundurmalısınız. Bu tür sürprizlerden kaçınmak için === ve !== operatörlerini kullanabilirsiniz.

Dizilerle çalışırken sürprizlerden kaçınmak için değerleri garantili farklı indekslere dönüştürmek için bir fonksiyon yazabilirsiniz. Bundan sonra dizinin elemanlarına ancak onun yardımı ile erişilebilir. Bu, programı yavaşlatabilir, ancak sürprizlerden kaçınmaya yardımcı olacaktır.

Test PHP 5.3.1'de yapıldı.

Ek bağlantılar

1. PHP tipi karşılaştırma tabloları .
2. PHP bağlamında MySQl Boş ve Boş Dizeler .

Etiketler: Etiketler ekle

değişken dize (12)

Dize boş değilse true ve dize boşsa false döndüren isNotEmpty işlevine sahibim. İçinden boş bir dize geçirirsem işe yaramadığını öğrendim.

isNotEmpty($input) işlevi ( $strTemp = $input; $strTemp = trim($strTemp); if(strTemp != "") //Bunu da denedi "if(strlen($strTemp) > 0)" ( true döndür ; ) yanlış döndür; )

Dize isNotEmpty ile kontrol edilir:

If(isNotEmpty($userinput["phoneNumber"])) ( //telefon numarasını doğrulayın ) else ( echo "Telefon numarası girilmedi
"; }

Satır boşsa, else yürütülmez, nedenini anlamıyorum, biri buna biraz ışık tutabilir mi lütfen.

Yanıtlar

serial_number adında bir alanınız varsa ve boş alan olup olmadığını kontrol etmek istiyorsanız

$seri_numarası = kırp($_POST); $q="select * user_id="$_SESSION""; $rs=mysql_query($q); while($row=mysql_fetch_assoc($rs))( if(empty($_POST["ütüler"]))( $ütüler=$satır["ürün1"]; )

bu şekilde, başka bir boş işleve sahip bir döngüdeki tüm döngüleri yineleyebilirsiniz.

Peki, cevap vermek yerine (sorununuzu zaten çözdüğünüze inanıyorum), size tavsiyede bulunacağım.

Diğerlerini bilmem ama ben şahsen şöyle bir şey gördüğümde gerçekten sinirleniyorum:

Eğer(<>) ( true döndür; ) false döndür;

bu zarif bir "dönüş" gerektirir (<>); ". Lütfen her zaman kodunuza bakın ve bu mantığı kaldırın. İçin her biri bir IF ifadesine ihtiyacınız olmayan durum.

Ben sadece tip kontrolü için kendi is_string fonksiyonumu ve uzunluk kontrolü için strlen fonksiyonumu yazıyorum.

İşlev emptyStr($str) ( dönüş is_string($str) && strlen($str) === 0; ) print emptyStr("") ? "boş" : "boş değil"; // boş

EDIT: Bir dizgenin içerip içermediğini kontrol etmek için trim işlevini de kullanabilirsiniz.

Is_string($str) && strlen(trim($str)) === 0;

PHP'nin boş() adında yerleşik bir işlevi vardır. Test if(empty($string))(...) php.net referansı: php boş yazarak yapılır.

Cevabınız var ama sizin durumunuzda kullanabilirsiniz

boş dön($giriş);

is_string($input);

Basit sorun. Değiştirmek:

If(strTemp != "")

If($strTemp != "")

Belki bunu şu şekilde de değiştirebilirsiniz:

If($strTemp !== "")

çünkü != "", PHP'nin otomatik tür dönüştürmesi nedeniyle 0 sayısal sayısını ve diğer birkaç durumu iletirseniz true değerini döndürür.

Ayrıca PHP'nin zaten boş bir() işlevi olduğunu unutmayın.

PHP boş bir dizeyi false olarak değerlendirir, böylece şunları kullanabilirsiniz:

if (trim($userinput["phoneNumber"])) ( // telefon numarasını doğrulayın ) else ( echo "Telefon numarası girilmedi
"; }

Javascript'in yanı sıra CGI/Perl günlerine kadar uzanan boş bir dizeyi test etmek için her zaman bir normal ifade kullanırım, öyleyse neden örneğin PHP olmasın (denenmemiş olsa da)

Dönüş preg_match("/\S/", $input);

\S'nin boşluk olmayan herhangi bir karakteri temsil ettiği yer

Sadece strlen() işlevini kullanın

if (strlen($s)) ( // boş değil )

Geçenlerde kendime aynı soruyu sordum.
Birkaç olası çözüm var, işte 3 geçerli çözüm:

  • s.indexOf(başlangıç) === 0
  • s.substr(0,starter.length) === başlatıcı
  • s.lastIndexOf(starter, 0) === 0 (Mark Bayer'in cevabına baktıktan sonra eklendi)
  • bir döngü kullanarak:

    startWith(s,starter) ( for (var i = 0,cur_c; i) işlevi< starter.length; i++) { cur_c = starter[i]; if (s[i] !== starter[i]) { return false; } } return true; }

Bir döngü kullanımını kullanan en son çözüme rastlamadım.
Şaşırtıcı bir şekilde, bu çözüm ilk 3'ten çok daha üstün.
İşte bu sonuca varmak için koştuğum jsperf testi: http://jsperf.com/startswith2/2

ps: ecmascript 6 (uyum), dizeler için kendi startWith yöntemini sunar.
Bu kadar ihtiyaç duyulan yöntemi ilk versiyona dahil etmeyi düşünselerdi ne kadar zamandan tasarruf edilirdi bir düşünün.

Yenile

Lütfen Steve'in dahil ettiği 2 döngü optimizasyonu olduğunu unutmayın, ikisinden ilki en iyi performansı gösterdi, bu yüzden bu kodu aşağıya göndereceğim:

İşlev başlarWith2(str, önek) ( if (dz. uzunluk< prefix.length) return false; for (var i = prefix.length - 1; (i >= 0) && (str[i] === önek[i]); --devam ediyorum; geri dön< 0; }