- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
<?php
class Json_Encode {
public function Encode($obj) {
$str = "";
$type = gettype($obj);
if ($type == "array") {
$fst = 1;
if (array_keys($obj) !== range(0, count($obj) - 1)) {
$str .= "{";
foreach($obj as $id=>$el) {
if ($fst) {
$fst = 0;
} else {
$str .= ",";
}
$str .= "\"$id\":";
$str .= $this->Encode($el);
}
$str .= "}";
} else {
$str .= "[";
foreach($obj as $el) {
if ($fst) {
$fst = 0;
} else {
$str .= ",";
}
$str .= $this->Encode($el);
}
$str .= "]";
}
} else if ($type == "string") {
$str .= "\"$obj\"";
} else if ($obj == null) {
$str .= "null";
} else {
$str .= "$obj";
}
return $str;
}
}
businessduck 28.08.2013 12:46 # 0
Vasiliy 28.08.2013 12:52 # 0
businessduck 28.08.2013 12:55 # 0
Vasiliy 28.08.2013 14:59 # 0
kegdan 28.08.2013 13:05 # 0
Stealth 28.08.2013 13:14 # −7
Акадамики, бля буду иисусе, PhD сучий потрох ... Синдорм умного человека x)
Stealth 28.08.2013 13:19 # −6
wvxvw 28.08.2013 14:30 # +1
Tairesh 29.08.2013 08:11 # 0
maximw 29.08.2013 13:18 # 0
anonimb84a2f6fd141 29.08.2013 22:05 # 0
anonimb84a2f6fd141 28.08.2013 18:43 # 0
bormand 28.08.2013 18:49 # 0
anonimb84a2f6fd141 28.08.2013 19:16 # 0
bormand 28.08.2013 19:19 # 0
Ну и в общем-то они ведут себя как значения, а не как ссылки:
kegdan 28.08.2013 19:27 # +4
- Ответствуйте олухи, что легче всего на свете?
Вовочка тянет руку.
- Говори отрок.
- Хй, батюшка!
- Обоснуй!
- От одной мысли встает!
- Озорно, но справедливо! Ответствуйте далее, олухи, что тяжелее всего на
свете?
Вовочка тянет руку.
- Говори отрок.
- Хй, батюшка!
- Обоснуй!
- Не захочет, и краном не поднимешь!
- Ох, озорно, но справедливо! Ответствуйте далее, олухи, что быстрее
всего на свете?
Вовочка тянет руку.
- Уймись отрок, так ты мне на х*ю всю физику построишь
kegdan 28.08.2013 19:20 # 0
bormand 28.08.2013 19:28 # +1
kegdan 28.08.2013 19:35 # 0
anonimb84a2f6fd141 28.08.2013 19:39 # 0
bormand 28.08.2013 19:43 # 0
1) иммутабельные (аля python, java, haskell, js, c# и т.п.);
2) мутабельные с полным копированием (аля c++'ный std::string, PHP ниже 5.0, perl?);
3) мутабельные с COW(copy-on-write) (строки в Qt, delphi, PHP 5.0+).
P.S. Про PHP могу гнать, в одному комменте со стековерловочки про COW в 5.0+ прочел, глубоким анализом не занимался.
> подавляющем большинстве
Ну да, так оно и есть. Ну только не всех языков, а именно используемых в настоящее время.
bormand 28.08.2013 19:40 # 0
Ну в жабе и питоне, к примеру, они именно так и устроены :) Просто они там иммутабельны, поэтому всем похуй.
kegdan 28.08.2013 19:47 # 0
И в питоне тоже? А в чем тайная выгода? Что бы стек не корежило когда строка из 0б внезапно увеличивалась до 9000?
bormand 28.08.2013 20:00 # 0
Во-вторых строки передаются достаточно часто, а меняются реже, а если и меняются, то как правило целиком. Поэтому глупо было бы 10 раз целиком копировать строку, при протаскивании ее через 10 функций.
В-третьих у таких строк очень дешевые слайсы.
> стек
А причем тут стек? В той же жабе на стеке только ссылка на строку, лежащую в куче.
P.S. Вообще, в инете довольно часто ведутся холивары, насчет того, какие строки лучше - иммутабельные, полностью копируемые или cow :) Тут они когда-то тоже были.
kegdan 28.08.2013 20:05 # 0
bormand 28.08.2013 20:35 # 0
Если про кресты - то нет. Там с этим свободней. В крестах юзают и cow строки (c++ builder, qt) и просто копируемые по значению (std::string).
А в пыхе она и является одним из примитивов.
kegdan 28.08.2013 20:40 # 0
А в java даже структур нету - классы да примитивы
bormand 28.08.2013 20:54 # 0
Можно и в других местах, если очень хочется...
kegdan 28.08.2013 20:58 # 0
bormand 28.08.2013 21:02 # 0
Не, ну не настолько же... Хотя если размещать объекты в маленьком пуле, который не выжимает из кеша из-за того, что его часто юзают, то так оно и будет.
В расшаренной памяти например, или в заmap'анном в память файле, или в самопальном пуле, память под которую выпросили у оси в обход менеджера кучи...
bormand 28.08.2013 20:38 # 0
Vasiliy 30.08.2013 18:58 # 0
http://ideone.com/lNtdHl
bormand 30.08.2013 19:17 # 0
Но так не будет, т.к. строки ведут себя как значения.
Это пример на гипотетическом пыхе, в котором строки бы передавались как в яве по ссылке без копирования и cow, но при этом оставались бы мутабельными.
Vasiliy 30.08.2013 19:20 # +1