Maison développement back-end tutoriel php 算法题。该怎么解决

算法题。该怎么解决

Jun 13, 2016 am 11:58 AM
gt json nbsp object

算法题。

对象原有属性值全部是大写,需求是将对象的属性值全部转化成小写么。 <br />通常思路是  对象转化成数组(遍历转化成小写)再转化成对象  这样的思路很繁琐递归数据源且效率低<br />求高效思路或方法<br />stdClass Object<br />(<br />    [INFO] => stdClass Object<br />        (<br />            [A] => 1<br />            [B] => 2<br />            [C] => 3<br />            [C] => 4<br />            [D] => stdClass Object<br />                (<br />                    [AA] => 11<br />                    [BB] => 22<br />                    [CC] => 33<br />                    [CC] => 44<br />                )<br /><br />        )<br /><br />)<br />
Copier après la connexion

------解决方案--------------------
对象不可能出现同名属性,请调整一下
------解决方案--------------------
转化为数组了过后可以用spl中的数组迭代器来遍历,不知道速度会不会快一点
------解决方案--------------------
不是很明白为什么要有这样的需求,可以这样写
$s = '{"A":1,"B":2,"C":3,"D":{"AA":11,"BB":22,"CC":33}}';<br />$o = json_decode($s); //模拟一个对象<br /><br />$t = serialize($o);<br />$t = preg_replace_callback('/("[A-Z]+")(;.+?;)/', function($r) { return strtolower($r[1]) . $r[2]; }, $t);<br />$o = unserialize($t);<br /><br />print_r($o);
Copier après la connexion
stdClass Object<br />(<br />    [a] => 1<br />    [b] => 2<br />    [c] => 3<br />    [d] => stdClass Object<br />        (<br />            [aa] => 11<br />            [bb] => 22<br />            [cc] => 33<br />        )<br />)<br />
Copier après la connexion


如果真是 json 则可写作
$s = '{"A":1,"B":2,"C":3,"D":{"AA":11,"BB":22,"CC":33}}';<br />$s = preg_replace_callback('/"[A-Z]+":/', function($r) { return strtolower($r[0]); }, $s);<br />print_r(json_decode($s));<br />
Copier après la connexion
stdClass Object<br />(<br />    [a] => 1<br />    [b] => 2<br />    [c] => 3<br />    [d] => stdClass Object<br />        (<br />            [aa] => 11<br />            [bb] => 22<br />            [cc] => 33<br />        )<br /><br />)<br />
Copier après la connexion

------解决方案--------------------
1.先json_encode把对象转字符串
2.使用preg_replace_callback 调用 strtolower把 "*": 转为小写,相当于把遍历改成正则替换。
3.json_decode 把字符串转为对象。

<br /><?php<br />$s = '{"A":1,"B":2,"C":3,"D":{"AA":11,"BB":22,"CC":33}}';<br />$obj = json_decode($s);<br /><br />print_r($obj);<br /><br />$str = json_encode($obj);<br />$str = preg_replace_callback('/"(.*?)":/', 'tolower', $str);<br />$obj = json_decode($str);<br /><br />print_r($obj);<br /><br />function tolower($matches){<br />    return '"'.strtolower($matches[1]).'":';<br />}<br />?><br />
Copier après la connexion

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Solution : Votre organisation vous demande de modifier votre code PIN Solution : Votre organisation vous demande de modifier votre code PIN Oct 04, 2023 pm 05:45 PM

Le message « Votre organisation vous a demandé de modifier votre code PIN » apparaîtra sur l'écran de connexion. Cela se produit lorsque la limite d'expiration du code PIN est atteinte sur un ordinateur utilisant les paramètres de compte basés sur l'organisation, sur lesquels ils contrôlent les appareils personnels. Cependant, si vous configurez Windows à l'aide d'un compte personnel, le message d'erreur ne devrait idéalement pas apparaître. Même si ce n'est pas toujours le cas. La plupart des utilisateurs qui rencontrent des erreurs déclarent utiliser leur compte personnel. Pourquoi mon organisation me demande-t-elle de modifier mon code PIN sous Windows 11 ? Il est possible que votre compte soit associé à une organisation et votre approche principale devrait être de le vérifier. Contacter votre administrateur de domaine peut vous aider ! De plus, des paramètres de stratégie locale mal configurés ou des clés de registre incorrectes peuvent provoquer des erreurs. Tout de suite

Quelles sont les différences entre Huawei GT3 Pro et GT4 ? Quelles sont les différences entre Huawei GT3 Pro et GT4 ? Dec 29, 2023 pm 02:27 PM

De nombreux utilisateurs choisiront la marque Huawei lors du choix des montres intelligentes. Parmi eux, les Huawei GT3pro et GT4 sont des choix très populaires. De nombreux utilisateurs sont curieux de connaître la différence entre Huawei GT3pro et GT4. Quelles sont les différences entre Huawei GT3pro et GT4 ? 1. Apparence GT4 : 46 mm et 41 mm, le matériau est un miroir en verre + un corps en acier inoxydable + une coque arrière en fibre haute résolution. GT3pro : 46,6 mm et 42,9 mm, le matériau est du verre saphir + corps en titane/corps en céramique + coque arrière en céramique 2. GT4 sain : en utilisant le dernier algorithme Huawei Truseen5.5+, les résultats seront plus précis. GT3pro : ajout d'un électrocardiogramme ECG, d'un vaisseau sanguin et de la sécurité

10 façons de régler la luminosité sous Windows 11 10 façons de régler la luminosité sous Windows 11 Dec 18, 2023 pm 02:21 PM

La luminosité de l’écran fait partie intégrante de l’utilisation des appareils informatiques modernes, en particulier lorsque vous regardez l’écran pendant de longues périodes. Il vous aide à réduire la fatigue oculaire, à améliorer la lisibilité et à visualiser le contenu facilement et efficacement. Cependant, en fonction de vos paramètres, il peut parfois être difficile de gérer la luminosité, notamment sous Windows 11 avec les nouvelles modifications de l'interface utilisateur. Si vous rencontrez des difficultés pour régler la luminosité, voici toutes les manières de gérer la luminosité sous Windows 11. Comment modifier la luminosité sous Windows 11 [10 méthodes expliquées] Les utilisateurs d'un seul moniteur peuvent utiliser les méthodes suivantes pour régler la luminosité sous Windows 11. Cela inclut les systèmes de bureau utilisant un seul moniteur ainsi que les ordinateurs portables. Commençons. Méthode 1 : Utiliser le Centre d'action Le Centre d'action est accessible

Comment désactiver l'authentification de navigation privée pour iPhone dans Safari ? Comment désactiver l'authentification de navigation privée pour iPhone dans Safari ? Nov 29, 2023 pm 11:21 PM

Dans iOS 17, Apple a introduit plusieurs nouvelles fonctionnalités de confidentialité et de sécurité dans son système d'exploitation mobile, dont la possibilité d'exiger une authentification à deux facteurs pour les onglets de navigation privée dans Safari. Voici comment cela fonctionne et comment le désactiver. Sur un iPhone ou un iPad exécutant iOS 17 ou iPadOS 17, le navigateur d'Apple nécessite désormais une authentification Face ID/Touch ID ou un mot de passe si un onglet de navigation privée est ouvert dans Safari, puis quittez la session ou l'application pour y accéder à nouveau. En d'autres termes, si quelqu'un met la main sur votre iPhone ou iPad alors qu'il est déverrouillé, il ne pourra toujours pas consulter votre vie privée sans connaître votre mot de passe.

Le script d'activation numérique Win10/11 MAS version 2.2 prend à nouveau en charge l'activation numérique Le script d'activation numérique Win10/11 MAS version 2.2 prend à nouveau en charge l'activation numérique Oct 16, 2023 am 08:13 AM

La célèbre version du script d'activation MAS2.2 prend à nouveau en charge l'activation numérique. La méthode provient de @asdcorp et de l'équipe. L'auteur de MAS l'appelle HWID2. Téléchargez collectosstate.exe (non original, modifié) depuis https://github.com/massgravel/Microsoft-Activation-Scripts, exécutez-le avec des paramètres et générez GenuineTicket.xml. Jetez d’abord un œil à la méthode d’origine : rassemblezstate.exePfn=xxxxxxx;DownlevelGenuineState=1, puis comparez-la avec la dernière méthode : rassemblez

Combinaison de golang WebSocket et JSON : réalisation de la transmission et de l'analyse des données Combinaison de golang WebSocket et JSON : réalisation de la transmission et de l'analyse des données Dec 17, 2023 pm 03:06 PM

La combinaison de golangWebSocket et JSON : réaliser la transmission et l'analyse des données Dans le développement Web moderne, la transmission de données en temps réel devient de plus en plus importante. WebSocket est un protocole utilisé pour établir une communication bidirectionnelle. Contrairement au modèle de requête-réponse HTTP traditionnel, WebSocket permet au serveur de transmettre activement des données au client. JSON (JavaScriptObjectNotation) est un format léger d'échange de données, concis et facile à lire.

Quelle est la différence entre MySQL5.7 et MySQL8.0 ? Quelle est la différence entre MySQL5.7 et MySQL8.0 ? Feb 19, 2024 am 11:21 AM

MySQL5.7 et MySQL8.0 sont deux versions différentes de la base de données MySQL. Il existe quelques différences principales entre elles : Améliorations des performances : MySQL8.0 présente quelques améliorations de performances par rapport à MySQL5.7. Ceux-ci incluent de meilleurs optimiseurs de requêtes, une génération de plans d'exécution de requêtes plus efficaces, de meilleurs algorithmes d'indexation et des requêtes parallèles, etc. Ces améliorations peuvent améliorer les performances des requêtes et les performances globales du système. Prise en charge JSON : MySQL 8.0 introduit la prise en charge native du type de données JSON, y compris le stockage, la requête et l'indexation des données JSON. Cela rend le traitement et la manipulation des données JSON dans MySQL plus pratiques et efficaces. Fonctionnalités de transaction : MySQL8.0 introduit de nouvelles fonctionnalités de transaction, telles que l'atome

Conseils d'optimisation des performances pour la conversion de tableaux PHP en JSON Conseils d'optimisation des performances pour la conversion de tableaux PHP en JSON May 04, 2024 pm 06:15 PM

Les méthodes d'optimisation des performances pour la conversion des tableaux PHP en JSON incluent : l'utilisation d'extensions JSON et de la fonction json_encode() ; l'ajout de l'option JSON_UNESCAPED_UNICODE pour éviter l'échappement de caractères ; l'utilisation de tampons pour améliorer les performances d'encodage de boucle et l'utilisation d'un tiers ; Bibliothèque d'encodage JSON.

See all articles