۳۲ تمرین PHP قسمت دوم

  • July 18, 2022 11:23 pm

۱۲. تابعی بنویسید که یک رشته فرمت شده برگرداند. مقدار بازگشتی باید برابر با “Value is VALUE” باشد که در آن مقدار یک عدد ۵ رقمی است.

مثال:

    solution(5); // should return "Value is 00005"

پاسخ:

مسئله را به دو روش مختلف حل می کنیم. در روش اول از تابع ()str_pad و در روش دوم از تابع ()sprintf استفاده می کنیم.

روش اول :

<?php

function solution($c)
{   
     return "Value is " . str_pad($c, 5, "0", STR_PAD_LEFT);
}
echo (solution("5"));
flesh

Value is 00005

معرفی تابع ()str_pad :

تابع ()str_pad یک رشته را با کاراکتر معینی از سمت راست یا چپ پر می کند.

سینتکس:

str_pad(string,length,pad_string,pad_type)

مثال:

<?php

$str = "Hello World";
echo str_pad($str,20,".");
flesh
    Hello World.........

مقادیر پارامتر :

پارامتر توضیحات
string ضروری. رشته به پد را مشخص می کند.
length ضروری. طول رشته جدید را مشخص می کند. اگر این مقدار کمتر از طول اصلی رشته باشد، کاری انجام نخواهد شد
pad_string اختیاری. رشته مورد استفاده برای padding را مشخص می کند. پیش فرض فضای خالی است
pad_type


اختیاری. مشخص می کند که از چه طرفی رشته را پد ببندد.


مقادیر ممکن:

  • STR_PAD_BOTH – بالشتک به دو طرف رشته. اگر یک عدد زوج نباشد، سمت راست بالشتک اضافی را دریافت می کند
  • STR_PAD_LEFT – در سمت چپ رشته قرار دهید
  • STR_PAD_RIGHT – در سمت راست رشته قرار دهید. این پیش فرض است

روش دوم:

<?php

function solution($c)
{   
   return sprintf("Value is %05d",$c); // This in codewars.
}
echo (solution("5"));
flesh

Value is 00005

معرفی تابع ()sprintf :

تابع ()sprintf یک رشته فرمت شده را در یک متغیر می نویسد.

پارامترهای arg1، arg2، ++ در علائم درصد (%) در رشته اصلی درج خواهند شد. این تابع “گام به گام” کار می کند. در علامت % اول، arg1، در علامت % دوم، arg2 و غیره درج شده است.

توجه: اگر نشانه های % بیشتر از آرگومان ها وجود دارد، باید از متغیرهایی استفاده کنید. یک مکان نگهدار بعد از علامت % درج می شود و از آرگومان-عدد و “\$” تشکیل شده است. مثال دو را ببینید.

توابع مرتبط:

()printf()     vprintf()     vsprintf()     fprintf()     vfprintf

سینتکس:

sprintf(format,arg1,arg2,arg++)

مثال:

<?php

$number = 9;
$str = "Beijing";
$txt = sprintf("There are %u million bicycles in %s.",$number,$str);
echo $txt;
flesh
    There are 9 million bicycles in Beijing.

مقادیر پارامتر :

پارامتر توضیحات
format

ضروری. رشته و نحوه قالب بندی متغیرهای موجود در آن را مشخص می کند.

مقادیر قالب ممکن:

  • %% – علامت درصد را برمی گرداند
  • %b – عدد باینری
  • %c – کاراکتر مطابق با مقدار ASCII
  • % d – عدد اعشاری امضا شده (منفی، صفر یا مثبت)
  • % e – نماد علمی با استفاده از حروف کوچک (مثلاً 1.2e + 2)
  • %E – نماد علمی با استفاده از حروف بزرگ (به عنوان مثال 1.2E+2)
  • %u – عدد اعشاری بدون علامت (برابر یا بزرگتر از صفر)
  • %f – عدد ممیز شناور (تنظیمات محلی آگاه هستند)
  • %F – عدد ممیز شناور (تنظیمات محلی آگاه نیست)
  • %g – کوتاهتر از %e و %f
  • %G – کوتاهتر از %E و %f
  • %o – عدد اکتال
  • %s – رشته
  • %x – عدد هگزادسیمال (حروف کوچک)
  • %X – عدد هگزادسیمال (حروف بزرگ)

مقادیر فرمت اضافی اینها بین % و حرف قرار می‌گیرند (مثال %2f):

  • + (هر دو + و – را جلوی اعداد اعمال می کند. به طور پیش فرض فقط اعداد منفی علامت گذاری می شوند)
  • (مشخص می‌کند چه چیزی به‌عنوان بالشتک استفاده شود. پیش‌فرض فضا است. باید همراه با تعیین‌کننده عرض استفاده شود. مثال: %’x20s (از “x” به‌عنوان بالشتک استفاده می‌شود)
  • – (سمت چپ مقدار متغیر را توجیه می کند)
  • [0-9] (حداقل عرض نگهداشته شده به مقدار متغیر را مشخص می کند)
  • .[0-9] (تعداد ارقام اعشاری یا حداکثر طول رشته را مشخص می کند)

توجه: اگر از چندین مقدار فرمت اضافی استفاده می شود، باید به همان ترتیب بالا باشند.

arg1 ضروری. آرگومانی که باید در اولین علامت %- در رشته قالب درج شود
arg2 اختیاری. آرگومانی که باید در دومین علامت %- در رشته قالب درج شود
arg++ اختیاری. آرگومانی که باید در سومین، چهارمین و غیره علامت %- در رشته قالب درج شود

۱۳. شما به تازگی وارد یک خیابان کاملاً مستقیم شده اید که دقیقاً n خانه یکسان در دو طرف جاده دارد. طبیعتاً دوست دارید شماره خانه افراد آن طرف خیابان را بدانید. خیابان چیزی شبیه به این است:

    Street
    1|   |6
    3|   |4
    5|   |2

زوج ها در سمت راست افزایش می یابند و فردها در سمت چپ کاهش می یابند. شماره خانه ها از ۱ شروع می شود و بدون قطع شدن افزایش می یابد. وقتی n = ۳ باشد، ۱ مقابل ۶، ۳ مقابل ۴ و ۵ مقابل ۲ است.

با توجه به آدرس شماره خانه و طول خیابان n، شماره خانه را در طرف مقابل خیابان به دست آورید.

مثال:

    1, 3 --> 6
    3, 3 --> 4
    2, 3 --> 5
    3, 5 --> 8

پاسخ:

<?php

function overTheRoad($address, $street)
{
    return $street * 2 - $address + 1;
}
echo overTheRoad(5, 6);
flesh

8

۱۴. تابعی بنویسید که اگر اولین آرگومان ارسال شده به آرگومان دوم ختم شود، مقدار true را برگرداند. (هر دو آرگومان رشته هستند)

مثال:

    solution('abc', 'bc') // returns true
    solution('abc', 'd') // returns false

پاسخ:

<?php

function solution($str, $ending)
{
    if (substr($str, -strlen($ending)) == $ending)
        return true;
}
echo(solution("samurai", "ai"));
flesh

1

یا:

<?php

function solution($str, $ending)
{
    return substr($str, -strlen($ending), strlen($ending)) == $ending;
}
echo(solution("samurai", "ai"));
flesh

1

معرفی تابع ()substr :

تابع ()substr بخشی از یک رشته را بر می گرداند.

سینتکس:

substr(string,start,length)

مثال:

<?php

echo substr("Hello world",6);
flesh
    world

مقادیر پارامتر :

پارامتر توضیحات
string ضروری. رشته ای را برای بازگشت بخشی از آن مشخص می کند.
start

ضروری. مشخص می کند که در رشته از کجا شروع شود.

  • یک عدد مثبت – از یک موقعیت مشخص در رشته شروع کنید.
  • یک عدد منفی – از یک موقعیت مشخص از انتهای رشته شروع کنید.
  • 0 – از اولین کاراکتر رشته شروع کنید.
length

اختیاری. طول رشته برگشتی را مشخص می کند. پیش فرض تا انتهای رشته است.

  • یک عدد مثبت – طولی که باید از پارامتر شروع بازگردانده شود.
  • عدد منفی – طولی که باید از انتهای رشته برگردانده شود.
  • اگر پارامتر طول 0، NULL یا FALSE باشد – یک رشته خالی برمی گرداند.

معرفی تابع ()strlen :

تابع ()strlen طول یک رشته را برمی گرداند.

سینتکس:

strlen(string)

مثال:

<?php

echo strlen("Hello");
flesh
    5

مقادیر پارامتر :

پارامتر توضیحات
string ضروری. رشته مورد بررسی را مشخص می کند.

۱۵. اسید دئوکسی ریبونوکلئیک (DNA) یک ماده شیمیایی است که در هسته سلول ها یافت می شود و حاوی “دستورالعمل” برای رشد و عملکرد موجودات زنده است.
در رشته های DNA، نمادهای “A” و “T” مکمل یکدیگر هستند، مانند “C” و “G”. تابع شما یک طرف DNA (رشته، به جز Haskell) را دریافت می کند. باید طرف مکمل دیگر را برگردانید. رشته DNA هرگز خالی نیست یا اصلاً DNA وجود ندارد .

مثال:

    "ATTGC" --> "TAACG"
    "GTAT" --> "CATA"

پاسخ:

مسئله را به سه روش مختلف حل می کنیم:

روش اول:

<?php

function DNA_strand($dna)
{
    $ar1 = str_split($dna);
    for ($x = 0; $x < strlen($dna); $x++) {
        if ($ar1[$x] == "A") $ar1[$x] = "T";
        elseif ($ar1[$x] == "T") $ar1[$x] = "A";
        elseif ($ar1[$x] == "C") $ar1[$x] = "G";
        elseif ($ar1[$x] == "G") $ar1[$x] = "C";
    }
    return implode($ar1);
}
echo(DNA_strand("ACTA"));
flesh

TGAT

روش دوم:

<?php

function DNA_strand($dna)
{
    return strtr($dna, ['A' => 'T', 'T' => 'A', 'C' => 'G', 'G' => 'C']);
}
echo(DNA_strand("ACTA"));
flesh

TGAT

روش سوم:

<?php

function DNA_strand($dna)
{
    return strtr($dna, 'ACGT', 'TGCA');
}
echo(DNA_strand("ACTA"));
flesh

TGAT

تابع های ()str_split و ()strlen در تمرینات قبلی معرفی شدند.

معرفی تابع ()strtr :

تابع ()strtr کاراکترهای خاصی را در یک رشته ترجمه می کند.

توجه: اگر پارامترهای from و to از نظر طول متفاوت باشند، هر دو به طول کوتاه‌ترین فرمت می‌شوند.

سینتکس:

strtr(string,from,to)

مثال:

<?php

echo strtr("Hilla Warld","ia","eo");
flesh
    Hello World

مقادیر پارامتر :

پارامتر توضیحات
string ضروری. رشته ای را برای ترجمه مشخص می کند.
from مورد نیاز (مگر اینکه از آرایه استفاده شود). مشخص می کند چه کاراکترهایی را تغییر دهید.
to مورد نیاز (مگر اینکه از آرایه استفاده شود). مشخص می کند که به چه کاراکترهایی تغییر دهید.
array مورد نیاز (مگر اینکه از to و from استفاده شود). آرایه ای که شامل چه چیزی به عنوان کلید و چه چیزی به عنوان مقدار تغییر می کند.

۱۶. در این تمرین به شما یک رشته از اعداد جدا شده با فاصله داده می شود و باید بزرگ ترین و کوچک ترین عدد را برگردانید.

مثال:

    highAndLow("1 2 3 4 5");  // return "5 1"
    highAndLow("1 2 -3 4 5"); // return "5 -3"
    highAndLow("1 9 3 4 -5"); // return "9 -5"

توجه:

  • همه اعداد Int32 معتبر هستند، نیازی به اعتبارسنجی آنها نیست.
  • همیشه حداقل یک عدد در رشته ورودی وجود خواهد داشت.
  • رشته خروجی باید دو عدد باشد که با یک فاصله از هم جدا شده اند و بالاترین عدد اول است.

پاسخ:

مسئله را به دو روش مختلف حل می کنیم:

روش اول:

<?php

function highAndLow($numbers)
{
    $ar1 = explode(" ", $numbers);
    sort($ar1);
    foreach ($ar1 as $key => $val) {
        $ar1[$key] = $val;
    }
    return $ar1[count($ar1) - 1] . " " . $ar1[0];
}
echo(highAndLow("8 3 -5 42 -1 0 0 -9 4 7 4 -4"));
flesh

42 -9

روش دوم:

<?php

function highAndLow($numbers)
{
    $a = explode(' ', $numbers);
    return max($a) . " " . min($a);
}
echo(highAndLow("8 3 -5 42 -1 0 0 -9 4 7 4 -4"));
flesh

42 -9

تابع ()explode در تمرینات قبلی معرفی گردید.

معرفی تابع ()count :

تابع ()count تعداد عناصر یک آرایه را برمی گرداند.

سینتکس:

count(array, mode)

مثال:

<?php

$cars=array("Volvo","BMW","Toyota");
echo count($cars);
flesh
    3

مقادیر پارامتر :

پارامتر توضیحات
array ضروری. آرایه را مشخص می کند.
mode

اختیاری. حالت را مشخص می کند. مقادیر ممکن:

  • 0 – پیش فرض همه عناصر آرایه های چند بعدی را نمی شمارد.
  • 1 – آرایه را به صورت بازگشتی می شمارد (همه عناصر آرایه های چند بعدی را می شمارد)

معرفی تابع ()max :

تابع ()max بالاترین مقدار در یک آرایه یا بالاترین مقدار چند مقدار مشخص شده را برمی گرداند.

سینتکس:

max(array_values);
or
max(value1,value2,...);

مثال:

<?php

echo(max(2,4,6,8,10) . "<br>");
echo(max(22,14,68,18,15) . "<br>");
echo(max(array(4,6,8,10)) . "<br>");
echo(max(array(44,16,81,12)));
flesh
    10
    68
    10
    81

مقادیر پارامتر :

پارامتر توضیحات
array_values ضروری. یک آرایه حاوی مقادیر را مشخص می کند.
value1,value2,… ضروری. مقادیر مورد مقایسه را مشخص می کند. (باید حداقل دو مقدار باشد)

معرفی تابع ()min :

تابع ()min کمترین مقدار را در یک آرایه یا کمترین مقدار چند مقدار مشخص شده را برمی گرداند.

سینتکس:

min(array_values);
or
min(value1,value2,...);

مثال:

<?php

echo(min(2,4,6,8,10) . "<br>");
echo(min(22,14,68,18,15) . "<br>");
echo(min(array(4,6,8,10)) . "<br>");
echo(min(array(44,16,81,12)));
flesh
    2
    14
    4
    12

مقادیر پارامتر :

پارامتر توضیحات
array_values ضروری. یک آرایه حاوی مقادیر را مشخص می کند.
value1,value2,… ضروری. مقادیر مورد مقایسه را مشخص می کند (باید حداقل دو مقدار باشد)

۱۷. به شما یک رشته از n خط داده می شود که هر زیر رشته دارای n کاراکتر است. مثلا:

  s = “abcd\nefgh\nijkl\nmnop”  

ما مقیاس بندی “افقی” و “عمودی” این مربع از رشته ها را مطالعه خواهیم کرد.

مقیاس بندی افقی k یک رشته شامل تکرار k برابر هر کاراکتر رشته (به جز ‘n\’) است.

n\ برای رفتن به خط بعدی است و چاپ نمی شود.

   Example: 2-horizontal scaling of s: => “aabbccdd\neeffgghh\niijjkkll\nmmnnoopp”   

مقیاس بندی v-vertical یک رشته شامل تکرار V برابر هر قسمت از رشته مربع است.

   Example: 2-vertical scaling of s: => “abcd\nabcd\nefgh\nefgh\nijkl\nijkl\nmnop\nmnop”   

مقیاس تابع (strng، k، v) یک مقیاس بندی افقی K و یک مقیاس بندی عمودی V را انجام می دهد.

مثال:

   a = "abcd\nefgh\nijkl\nmnop"

   scale(a, 2, 3) --> "aabbccdd\naabbccdd\naabbccdd\neeffgghh\neeffgghh\neeffgghh\
   niijjkkll\niijjkkll\niijjkkll\nmmnnoopp\nmmnnoopp\nmmnnoopp"

چاپ:

    abcd -----> aabbccdd 
    efgh        aabbccdd 
    ijkl        aabbccdd 
    mnop        eeffgghh 
                eeffgghh 
                eeffgghh 
                iijjkkll 
                iijjkkll 
                iijjkkll 
                mmnnoopp 
                mmnnoopp 
                mmnnoopp

تابعی به نام scale(strng, k, v) بنویسید. k و v اعداد صحیح مثبت خواهند بود.

  If strng == ""   return   ""  

پاسخ:

برای حل این تمرین باید با مفهوم عبارات با قاعده یا Regular Expression که به اختصار RegEx نامیده می شود آشنایی داشته باشید.

این عبارت ها برای جستجو و یافتن مطابقت یک الگوی خاص در یک متن مورد استفاده قرار می گیرند. با استفاده از RegEx می توان کاراکترهای خاص یا کلمات معین را در یک متن پیداکرده و آنها را حذف یا جایگزین یا تکرار و یا . . . کرد.

در این تمرین رشته داده شده شامل چند کلمه می باشد. صورت مسئله از ما خواسته است که تعداد حروف هر کلمه را k بار تکرار کرده و هر کلمه را v بار تکرار کنیم.

برای درج کامنت در کد از // استفاده می کنیم. کامنت ها برای توضیح کدها استفاده شده و توسط مفسر php اجرا نمی شوند.

<?php

function scale($strng, $k, $v)
{
    // duplicate every character:
    //https://stackoverflow.com/questions/9550769/passing-additional-arguments-to-preg-replace-callback-using-php-5-2-6?noredirect=1&lq=1
    $yyy = preg_replace_callback('/[a-zA-Z]/',
        function ($matches) use ($k) {
            return str_repeat($matches[0], $k);
        },
        $strng);
    // duplicate words:
    $zzz = preg_replace_callback('/[a-zA-Z]+/',
        function ($matches) use ($v) {
            return str_repeat(($matches[0] . "\n"), $v);
        },
        $yyy);
    // remove blank lines from text in PHP?
    // https://stackoverflow.com/questions/709669/how-do-i-remove-blank-lines-from-text-in-php
    $aaa = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $zzz);
    // Remove trailing newline.
    // https://stackoverflow.com/questions/3530099/remove-trailing-newline
    return preg_replace('/\n$/', '', $aaa);
}
echo "<pre>";
  print_r(scale("abcd\nefgh\nijkl\nmnop", 2, 3));
echo "</pre>";
flesh
    aabbccdd
    aabbccdd
    aabbccdd
    eeffgghh
    eeffgghh
    eeffgghh
    iijjkkll
    iijjkkll
    iijjkkll
    mmnnoopp
    mmnnoopp
    mmnnoopp

معرفی تابع ()preg_replace_callback :

      تابع ()preg_replace_callback که یک عبارت و یک callback به آن داده می‌شود، رشته‌ای را برمی‌گرداند که در آن همه مطابقت‌های عبارت با زیررشته‌ای که توسط تابع callback برگردانده شده است جایگزین می‌شوند.

سینتکس:

preg_replace_callback(pattern, callback, input, limit, count)

مثال:

<?php

function countLetters($matches) {
    return $matches[0] . '(' . strlen($matches[0]) . ')';
}
$input = "Welcome to W3Schools.com!";
$pattern = '/[a-z0-9\.]+/i';
$result = preg_replace_callback($pattern, 'countLetters', $input);
echo $result;
flesh
    Welcome(7) to(2) W3Schools.com(13)!

مقادیر پارامتر :

پارامتر توضیحات
pattern ضروری. یک عبارت منظم یا آرایه ای از عبارات منظم که نشان می دهد چه چیزی باید جستجو شود.
replacements

ضروری. یک تابع فراخوانی که جایگزین را برمی گرداند.

تابع callback دارای یک پارامتر است که شامل آرایه ای از موارد مشابه است. اولین عنصر در آرایه حاوی تطابق برای کل عبارت است در حالی که عناصر باقی مانده برای هر یک از گروه های عبارت مطابقت دارند.

input ضروری. رشته یا آرایه رشته هایی که جایگزینی در آنها انجام می شود.
limit اختیاری. پیش‌فرض -1 به معنای نامحدود است. محدودیتی برای تعداد جایگزینی که می توان در هر رشته انجام داد تعیین می کند.
count اختیاری. پس از اجرای تابع، این متغیر حاوی عددی خواهد بود که نشان می دهد چند جایگزین انجام شده است.

معرفی تابع ()str_repeat :

تابع ()str_repeat یک رشته را چند بار مشخص تکرار می کند.

سینتکس:

str_repeat(string,repeat)

مثال:

<?php

echo str_repeat("Wow",13);
flesh
    WowWowWowWowWowWowWowWowWowWowWowWowWow

مقادیر پارامتر :

پارامتر توضیحات
string ضروری. رشته ای را برای تکرار مشخص می کند.
repeat ضروری. تعداد دفعات تکرار رشته را مشخص می کند. باید بزرگتر یا مساوی 0 باشد.

معرفی تابع ()preg_replace :

تابع ()preg_replace رشته یا آرایه ای از رشته ها را برمی گرداند که در آن تمام تطابقات یک الگو یا لیست الگوهای موجود در ورودی با رشته های فرعی جایگزین می شوند.

سه روش مختلف برای استفاده از این تابع وجود دارد:
 
  • یک الگو و یک رشته جایگزین. مطابقت های الگو با رشته جایگزین جایگزین می شود.
  • آرایه ای از الگوها و یک رشته جایگزین. مطابق با هر یک از الگوها با رشته جایگزین جایگزین می شود.
  • آرایه ای از الگوها و آرایه ای از رشته های جایگزین. مطابقت های هر الگو با رشته جایگزین در همان موقعیت در آرایه جایگزین جایگزین می شود. اگر موردی در آن موقعیت یافت نشد، منطبق با یک رشته خالی جایگزین می شود.
      رشته های جایگزین ممکن است حاوی یک مرجع بازگشتی به شکل \n یا $n باشند که در آن n شاخص یک گروه در الگو است. در رشته برگشتی، نمونه‌های \n و $n با زیررشته‌ای جایگزین می‌شوند که توسط گروه یا، اگر \0 یا $0 استفاده شود، با کل عبارت مطابقت داده شده است.
 
توجه: برای هر رشته ورودی، تابع الگوها را به ترتیبی که داده شده اند ارزیابی می کند. نتیجه ارزیابی الگوی اول روی رشته به عنوان رشته ورودی الگوی دوم و غیره استفاده می شود. این می تواند منجر به رفتار غیرمنتظره شود.

سینتکس:

preg_replace(patterns, replacements, input, limit, count)

مثال:

<?php

$str = 'Visit Microsoft!';
$pattern = '/microsoft/i';
echo preg_replace($pattern, 'W3Schools', $str);
flesh
    Visit W3Schools!

مقادیر پارامتر :

پارامتر توضیحات
patterns
ضروری. شامل یک عبارت منظم یا آرایه ای از عبارات منظم است.
replacements
ضروری. یک رشته جایگزین یا آرایه ای از رشته های جایگزین.
input
ضروری. رشته یا آرایه رشته هایی که جایگزینی در آنها انجام می شود.
limit
اختیاری. پیش‌فرض -1 به معنای نامحدود است. محدودیتی برای تعداد جایگزینی که می توان در هر رشته انجام داد تعیین می کند.
count
اختیاری. پس از اجرای تابع، این متغیر حاوی عددی خواهد بود که نشان می دهد چند جایگزین انجام شده است.

۱۸. تابعی بنویسید که یک عدد صحیح فرد می گیرد (0 < n < 1000000) که تفاوت بین دو مربع کامل متوالی است و این مربع ها را به عنوان یک رشته در قالب “بزرگتر-کوچکتر” برمی گرداند.

مثال:

    9 --> "25-16"
    5 --> "9-4" 
    7 --> "16-9"

پاسخ:

<?php

function findsquares($num)
{
    $a = intval($num / 2);
    $b = $num - $a;
    return $b * $b . "-" . $a * $a;
}
echo(findsquares(9));
flesh

25-16

معرفی تابع ()intval :

تابع ()intval مقدار صحیح یک متغیر را برمی گرداند.

سینتکس:

intval(variable, base);

مثال:

<?php

$a = 32;
echo intval($a) . "<br>";
$b = 3.2;
echo intval($b) . "<br>";
$c = "32.5";
echo intval($c) . "<br>";
$d = array();
echo intval($d) . "<br>";
$e = array("red", "green", "blue");
echo intval($e) . "<br>";
flesh
    32
    3
    32
    0
    1

مقادیر پارامتر :

پارامتر توضیحات
variable
ضروری. متغیری را برای بررسی مشخص می کند.
base
اختیاری. پایه مورد استفاده برای تبدیل را مشخص می کند. فقط زمانی اثر دارد که متغیر یک رشته باشد. پایه پیش فرض 10 است.

۱۹. لیستی از اعداد صحیح داریم. مشخص کنید که مجموع عناصر آن فرد است یا زوج.

پاسخ خود را به صورت رشته ای مطابق با «odd» یا «even» بدهید.
اگر آرایه ورودی خالی است آن را به صورت: [0] (آرایه با صفر) در نظر بگیرید.
 
مثال:
    Input: [0] 
    Output: "even"
 
    Input: [0, 1, 4] 
    Output: "odd" 

    Input: [0, -1, -5] 
    Output: "even"

پاسخ:

<?php

function odd_or_even(array $a)
{
      if (array_sum($a) % 2 == 0)
        return "even";
    else return "odd";
}
echo(odd_or_even([2, 5, 34, 6]));
flesh

odd

یا به طور خلاصه:

<?php

function odd_or_even(array $a)
{
   return array_sum($a) % 2 ? 'odd' : 'even';
}
echo(odd_or_even([2, 5, 34, 6]));
flesh

odd

معرفی تابع ()array_sum :

تابع ()array_sum مجموع تمام مقادیر آرایه را برمی گرداند.

سینتکس:

array_sum(array)

مثال:

<?php

$a=array(5,15,25);
echo array_sum($a);
flesh
    45

مقادیر پارامتر :

پارامتر توضیحات
array
ضروری. یک آرایه را مشخص می کند.

۲۰. ورودی تابع یک عدد صحیح است. خروجی شکلی است که طول و عرض آن به اندازه عدد صحیح باشد. عدد صحیح بین 1 تا 50 خواهد بود.

مثال:

n = 3، بنابراین خروجی باید یک مربع 3×3 درست مانند زیر به عنوان یک رشته باشد:
    +++
    +++
    +++

پاسخ:

روش اول:

<?php

function generateShape($int)
{
    for ($x = 0; $x < $int; $x++) {
        for ($y = 0; $y < $int; $y++) {
            $ar1[$y] = "+";
        }
        $ar2[$x] = (implode($ar1)) . "\n";
    }
    $a = implode($ar2);
//  Remove trailing newline.
//  https://stackoverflow.com/questions/3530099/remove-trailing-newline
    return preg_replace('/\n$/', '', $a);
}
echo "<pre>";
  print_r(generateShape(8));
echo "</pre>";

خروجی:

    ++++++++ 
    ++++++++ 
    ++++++++ 
    ++++++++ 
    ++++++++ 
    ++++++++ 
    ++++++++ 
    ++++++++

روش دوم:

<?php

function generateShape($int)
{
    return trim(str_repeat(str_repeat('+', $int) . "\n", $int));
}
echo "<pre>";
  print_r(generateShape(8));
echo "</pre>";

تابع ()preg_replace و تابع ()str_repeat در تمرینات قبل معرفی شدند.

معرفی تابع ()trim :

تابع ()trim فضای خالی و سایر کاراکترهای از پیش تعریف شده را از دو طرف رشته حذف می کند.
 

توابع مرتبط:

  • ()ltrim – فضای خالی یا سایر کاراکترهای از پیش تعریف شده را از سمت چپ رشته حذف می کند.
  • ()rtrim – فضای خالی یا سایر کاراکترهای از پیش تعریف شده را از سمت راست رشته حذف می کند.

سینتکس:

trim(string,charlist)

مثال:

<?php

$str = "Hello World!";
echo $str . "<br>";
echo trim($str,"Hed!");
flesh
    Hello World!
    llo Worl

مقادیر پارامتر :

پارامتر توضیحات
string
ضروری. رشته مورد بررسی را مشخص می کند.
charlist
اختیاری. مشخص می کند کدام کاراکتر از رشته حذف شود. در صورت حذف، تمام کاراکترهای زیر حذف می شوند:
  • “\0” – NULL
  • “\t” – tab
  • “\n” – new line
  • “\x0B” – vertical tab
  • “\r” – carriage return
  • ” ” – ordinary white space