1
0
mirror of https://github.com/php/doc-tr.git synced 2026-03-24 07:12:18 +01:00
Files
archived-doc-tr/language/types/numeric-strings.xml
2023-10-06 11:54:52 +03:00

153 lines
5.4 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 7ba2406e555a240338d63f72d9ac54a46e0bee5d Maintainer: nilgun Status: ready -->
<sect1 xml:id="language.types.numeric-strings" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Sayısal Dizeler</title>
<para>
Bir PHP dizesi, <type>int</type> veya <type>float</type> olarak
yorumlanabiliyorsa sayısal kabul edilir.
</para>
<para>
Resmi olarak PHP 8.0.0'dan itibaren:
</para>
<informalexample>
<programlisting>
<![CDATA[
WHITESPACES \s*
LNUM [0-9]+
DNUM ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9]*)
EXPONENT_DNUM (({LNUM} | {DNUM}) [eE][+-]? {LNUM})
INT_NUM_STRING {WHITESPACES} [+-]? {LNUM} {WHITESPACES}
FLOAT_NUM_STRING {WHITESPACES} [+-]? ({DNUM} | {EXPONENT_DNUM}) {WHITESPACES}
NUM_STRING ({INT_NUM_STRING} | {FLOAT_NUM_STRING})
]]>
</programlisting>
</informalexample>
<para>
PHP ayrıca <emphasis>öncü</emphasis> sayısal dizeler kavramına sahiptir. Bu,
sayısal bir dizge gibi başlayan ve ardından herhangi bir karakter gelen bir
dizedir.
</para>
<note>
<para>
Sayılarla sınırlanmış (harfe büyüklüğüne duyarsız) <literal>E</literal>
harfini içeren herhangi bir dizge, bilimsel gösterimiyle ifade edilen bir
sayı olarak görülecektir. Bu beklenmedik sonuçlar doğurabilir.
<programlisting role="php">
<![CDATA[
<?php
var_dump("0D1" == "000"); // yanlış, "0D1" bilimsel gösterim değil
var_dump("0E1" == "000"); // doğru, "0E1" => 0 * (10 ^ 1), yani 0
var_dump("2E1" == "020"); // doğru, "2E1" => 2 * (10 ^ 1), yani 20
?>
]]>
</programlisting>
</para>
</note>
<sect2 xml:id="language.types.numeric-string.conversion">
<title>Sayısal bağlamlarda kullanılan dizeler</title>
<para>
Bir dizenin sayı olarak değerlendirilmesi gerektiğinde (örneğin, aritmetik
işlemler, <type>int</type> tür bildirimi, vb.), Sonucu belirlemek için
aşağıdaki adımlar atılır:
<orderedlist>
<listitem>
<simpara>
Dize sayısal ise, (<constant>PHP_INT_MAX</constant> tarafından
tanımlandığı gibi) <type>int</type> türü sınırlarına uyuyorsa ve
dize bir tamsayı sayısal dizeyse, <type>int</type> olarak çözümlenir,
aksi takdirde bir <type>float</type> olarak çözümlenir.
</simpara>
</listitem>
<listitem>
<simpara>
Bağlam, öncü sayısal dizelere izin veriyorsa ve dize tek ise,
(<constant>PHP_INT_MAX</constant> tarafından tanımlandığı gibi)
<type>int</type> türü sınırlarına uyuyorsa ve dizenin baştaki bölümü
bir tamsayı sayısal dizeyse, <type>int</type> olarak çözümlenir,
aksi takdirde bir <type>float</type> olarak çözümlenir. Ek olarak
<constant>E_WARNING</constant> seviyesinde bir hata ortaya çıkar.
</simpara>
</listitem>
<listitem>
<simpara>
Dize sayısal değilse, bir <classname>TypeError</classname> yavrulanır.
</simpara>
</listitem>
</orderedlist>
</para>
</sect2>
<sect2 xml:id="language.types.numeric-string.prior">
<title>PHP 8.0.0 öncesindeki davranış</title>
<para>
PHP 8.0.0 öncesinde, bir dize yalnızca, <emphasis>önünde</emphasis> beyaz
boşluklar varsa sayısal, <emphasis>sonunda</emphasis> beyaz boşluklar varsa
öncü sayısal dize olduğu kabul edilirdi.
</para>
<para>
PHP 8.0.0 öncesinde, bir dize sayısal bir bağlamda kullanıldığında,
yukarıdaki adımlar aşağıdaki farklılıklarla uygulanırdı:
<itemizedlist>
<listitem>
<simpara>
Öncü sayısal dize kullanımı <constant>E_WARNING</constant> yerine
<constant>E_NOTICE</constant> seviyesinde bir hataya sebep olurdu.
</simpara>
</listitem>
<listitem>
<simpara>
Dize sayısal değilse, <constant>E_WARNING</constant> seviyesinde
bir hata ortaya çıkar ve değer olarak <literal>0</literal> dönerdi.
</simpara>
</listitem>
</itemizedlist>
PHP 7.1.0 öncesinde, ne <constant>E_NOTICE</constant>
ne de <constant>E_WARNING</constant> seviyesinde bir hata ortaya çıkardı.
</para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
$foo = 1 + "10.5"; // $foo bir float (11.5)
$foo = 1 + "-1.3e3"; // $foo bir float (-1299)
$foo = 1 + "bob-1.3e3"; // PHP 8.0.0 sonrasında TypeError, öncesinde int (1)
$foo = 1 + "bob3"; // PHP 8.0.0 sonrasında TypeError, öncesinde int (1)
$foo = 1 + "10 Small Pigs"; // $foo bir int (11) ve PHP 8.0.0 sonrasında E_WARNING, öncesinde E_NOTICE
$foo = 4 + "10.2 Little Piggies"; // $foo bir float (14.2) ve PHP 8.0.0 sonrasında E_WARNING, öncesinde E_NOTICE
$foo = "10.0 pigs " + 1; // $foo bir float (11) ve PHP 8.0.0 sonrasında E_WARNING, öncesinde E_NOTICE
$foo = "10.0 pigs " + 1.0; // $foo bir float (11) ve PHP 8.0.0 sonrasında E_WARNING, öncesinde E_NOTICE
?>
]]>
</programlisting>
</informalexample>
</sect2>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->