PHP5.4.7でstdClassをArrayに変換した時に詰まったこと
タグの環境にてページネーションを実装中に現象。
https://gist.github.com/mitukiii/917075
こちらのロジックを使用させて頂きました。
$array = stdClassToArray($results); // resultsにはSQLをページネーションした形で取得したstdClass objectが入っている
$page = array(
'current' => $array['currentPage'],
'perpage' => $array['perPage'],
'last' => $array['lastPage'],
'total' => $array['total']
);
としたところ
Undefined index: currentPage
何か化けてる…?
取りあえず全ソースファイルの文字コードをUTF-8に強制変換かけてみるも効果無し。
仕方ないので文字をヘキサ表示してみる
var_dump(bin2hex($key));
おぉ…null文字が混入している。
null*nullになっている意味が正直分かりませんが取りあえずnullをどうにかしてあげるといいということですね。
$key = str_replace('@', '', $key);
これを
$key = str_replace("\x00", "", str_replace('@', '', $key));
こうなって取りあえず文字化けは解消しました。
アスタリスクは…正直どうにもなりませんね。
コントローラー側で
$array = stdClassToArray($results);
$page = array(
'current' => $array['*currentPage'],
'perpage' => $array['*perPage'],
'last' => $array['*lastPage'],
'total' => $array['*total']
);
アスタリスク足して指定してやることでちゃんととれました。
View(Smarty)側への受け渡しはいつも通りで。
Author And Source
この問題について(PHP5.4.7でstdClassをArrayに変換した時に詰まったこと), 我々は、より多くの情報をここで見つけました https://qiita.com/nagai_akinari/items/a7939972f4e7aa53df3e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .