Atsakymai į šiuos klausimus bus publikuoti ketvirtadienį. Taip pat šiuo metu vyksta atsakymų į PHP klausimus konkursas, kurio metu geriausiai ir greičiausiai atsakiusieji bus apdovanoti.
Dalyvių rezultatai:
- tygas - 7.2
- Braunikas - 7
- Armandas - 6.2
- slibinas - 6.1
PHP klausimai #9:
- Tarkime turime tokį masyvą:
$array = array(1,1,'labas',3,4,4,5,'poryt',6,6,6,'poryt',2,2,2);
Koks greičiausias būdas suskaičiuoti tam tikros reikšmės skaičių masyve?
Galimi atsakymo variantai:- funkcija array_total_values
- funkcija array_count_values
- ciklas foreach
- funkcija count
- ciklas for
- Kuris iš žemiau pateiktų būdų yra geriausias atskirti eilutei (string) pagal “_-_” šabloną? Galimi atsakymai:
-
str_split($string, strpos($string, "_-_"))
-
preg_split("_-_", $string);
-
explode("_-_", $string);
- Visi būdai geri
-
- Kokiu, jūsų nuomone, geriausiu/paprasčiausiu būdu galima šią eilutę (string):
$string = "a=10&b[]=20&c=30&d=40+50";
paversti į tokį masyvą:
array(4) { ["a"]=> string(2) "10" ["b"]=> array(1) { [0]=> string(2) "20" } ["c"]=> string(2) "30" ["d"]=> string(5) "40 50" }
- Koks rezultatas bus išvestas įvykdžius šį skriptą?
<?php function 1dotEach($n) { if ($n > 0) { 1dotEach(--$n); echo "."; }else { return $n; } } 1dotEach(4); ?>
- Kokio “pattern” pavyzdys yra čia pateiktas kodas?
<?php class MyClassBuilder { public function build() { return new MyClass(); } } ?>
- Koks skirtumas tarp paprasto ir ’static’ metodų ?
- Kas neteisinga su šiuo kodu remiantis PHP 5 standartais, tačiau yra teisinga PHP 4?
<?php class MyClass { function reassign($var) { $this = $var; } } $a = new MyClass(); $b = new MyClass(); $a->reassign($b); ?>
- Kokius XML “parsing” metodus palaiko PHP 5?
- Kokių “super global” kintamųjų turinys yra $_REQUEST?
- Ką privaloma atlikti norint apsisaugoti nuo SQL injekcijų?
2008-01-22 | 20:19
1. array_count_values()
2. 3
3. parse_str($string);
4. “….”
5.
6. static metodų negalima pasiekti per $this, tačiau galima pasiekti per $self, arba per $parent. Taip pat šie metodai negali būti pasiekti naudojant -> operatorių.
7.
8. xml_set_element_handler()
xml_set_character_data_handler()
xml_set_processing_instruction_handler()
xml_set_default_handler()
xml_set_unparsed_entity_decl_handler()
xml_set_notation_decl_handler()
xml_set_external_entity_ref_handler()
9. visi $_POST, $_GET, $_SESSION kintamieji
10. Būtina visus vartotojų duomenis filtruoti nuo kabučių, kad ir su funkcija addslashes($text); (http://lt.php.net/addslashes)
2008-01-22 | 22:53
1. ats.: foreach
array_total_values - tokios fukncijos berods visai nera
array_count_values - uzduoti atlieka, bet skaiciuos VISU reiksmiu pasikartojima (neoptimalu, ypac jei masyvas didelis)
count - masyvo elemento skaicius
for - netinka iteruoti asociatyviam masyvui
2. ats.: explode
str_split - skaldys i fiksuoto dydzio gabalus
preg_split - skaldys pagal “-”, nes “_-_” bus suprastas kaip “/-/”
3. parse_str($string, $array);
var_dump($array);
4. “….” (4 taskai)
5. builder
6. static metoda galima iskviesti nesukurus tos klases objekto.
Klase::metodas();
7. $this = $var;
9. $_POST, $_GET ir $_COOKIE;
10. jei neijungtas magic_qoutes, reikia user inputui ivykdyt addslashes() pries rasant i db. Galima ir kitaip escape’int kabutes. Pvz.:
// $string - user input’as
if (get_magic_quotes_gpc()) $string = stripslashes($string);
$string = htmlspecialchars($string, ENT_QUOTES);
$string = addslashes($string);
Taip nusausim 2 zuikius, pasisaugosim nuo sql injection’u ir nuo nepageidaujamo html/js kodo ivykdymo.