我有一个关联的数据数组,我有一个我想从该数组中删除的键数组(同时保持原始顺序中的其余键 - 不是这可能是一个约束).
我要寻找一个一个衬垫的PHP的做到这一点.
我已经知道如何我可以遍历数组,但它似乎应该有一些array_map用unset或array_filter解决方案外面我的把握.
我搜索了一下,但没有发现任何简洁.
要清楚这是一行中的问题:
//have this example associative array of data
$data = array(
'blue' => 43,
'red' => 87,
'purple' => 130,
'green' => 12,
'yellow' => 31
);
//and this array of keys to remove
$bad_keys = array(
'purple',
'yellow'
);
//some one liner here and then $data will only have the keys blue, red, green
Run Code Online (Sandbox Code Playgroud) 在php中,我们可以将默认参数传递给像这样的函数
function func_name(arg1,arg2=4,etc...) {
Run Code Online (Sandbox Code Playgroud)
但根据我的理解,我们无法通过函数调用,因此这是非法的:
function func2_name(arg1,arg2=time(),etc...) {
Run Code Online (Sandbox Code Playgroud)
所以,当我想要做一个函数值时(想象一下像时间函数一样,值不能在运行时之前知道)我必须像这样做一个混乱的工作:
function func3_name(arg1,arg2=null,etc...) {
if(arg2==null) arg2 = time();
Run Code Online (Sandbox Code Playgroud)
我想知道是否有人知道更好的方法,一种更简洁的方式将函数调用值作为默认参数传递给php?谢谢.
在PHP语言设计中还有任何根本原因,它不允许函数调用作为默认参数(就像它在预处理中做了一些特殊的事情吗?)或者这可能成为未来版本中的一个特性?
所以我有两个文件夹,我想添加到一个新的存储库,但他们拒绝添加因为它们已经受版本控制.我删除了那些文件夹及其子文件夹中的所有.svn文件夹,但SVN仍然知道某种方式.我怎么能看到他们认为他们属于哪个回购,告诉他们不要在那里,并将它们放入新的回购中而不删除它们或不得不移动它们?
有谁知道如何使IN子句以区分大小写的方式运行?我已经看到COLLATE可以和LIKE一起用于字符串搜索,但我不知道它是否或如何与IN一起使用.例如,我想做类似的事情
SELECT * FROM pages_table WHERE topic IN ('Food','NightLife','Drinks')
Run Code Online (Sandbox Code Playgroud)
我希望它返回主题为"食物"的页面,而不是那些主题为"食物"的页面,这是当前在此查询中发生的事情.谢谢.
PHP允许变量保存如下函数:
$f = function($a,$b) {
print "$a $b";
};
$f("Hello","World!"); //prints 'Hello World!'
Run Code Online (Sandbox Code Playgroud)
这对我来说很好.我正在尝试将一个函数传递给一个类并设置一个实例变量来保存该函数,但运气不佳:
class Clusterer {
private $distanceFunc;
public function __construct($f) {
$this->distanceFunc = $f;
print $f(1,7); //works
print $this->distanceFunc(1,7); //exceptions and errors abound
}
}
$func = function($a,$b) {
return abs($a-$b);
}
$c = new Clusterer($func);
Run Code Online (Sandbox Code Playgroud)
我在这里做错了吗?错误是该函数不存在所以我的猜测是它找到一个具有该名称的类函数(没有一个),然后放弃而不是寻找变量......我怎么能让它查看$ this-> distanceFunc作为变量?
编辑:所以在从下面的答案的建议后,我找到了一个解决方案,它是一个函数来包装调用.例如,我的班级现在是:
class Clusterer {
private $distanceFunc;
public function __construct($f) {
$this->distanceFunc = $f;
print $f(1,7); //works
print $this->distanceFunc(1,7); //exceptions and errors abound
}
private function distanceFunc($a,$b) {
$holder = …Run Code Online (Sandbox Code Playgroud) 通常当图像进入我的网站时,我使用我编写的图像库将其保存为jpg,默认质量为80%.现在,当我需要对它进行一些其他操作(比如裁剪它,甚至只是调整它)时,图像将以jpg打开,处理,然后保存回来.但是,如果它在我不想再次压缩之前已被压缩,或者每次我需要进行操作时质量都会下降.
有没有办法可以使用标准GD php库中的工具检测图像之前已经压缩了多少(与我猜的png版本相比)?我知道通过比较压缩的相对数量来检测图像在哪里被Photoshop处理的工具这样做,所以我认为可以检测到压缩量,但有人知道我将如何进行这种计算吗?谢谢.
鲍勃和爱丽丝都有一个他们想保密的位字符串.他们每个人都想知道他们的两个位串的逻辑AND是什么而不告诉对方或其他任何人他们的实际位串......他们怎么能这样做?请记住,即使他们都持有两个字符串的AND,他们仍然无法准确计算另一个人的字符串(当然,除非他们的一个字符串都是1).
我知道我之前在某种关键系统/投票系统中看到了类似的东西,但我记不起细节了.它必须是像私人随机密钥,xor它并以某种方式使用它...但我无法弄清楚细节.那里有聪明的加密人吗?
几天前,由于GDPR的变化,Twitter更新了其API的某些方面.从今天开始,我的一些应用程序已经以非常奇怪的方式打破了,我没想到会受到GDPR更改的影响.也许它与这些变化无关,但它是神秘的时机,因为他们几天前改变了API,现在我正在打破.我从速度限制终点得到的回报,就像我以前的2-3天前一样.
我正在使用python和twitter-application-only-auth == 0.3.3库,特别是我可以登录并创建客户端(所以我的令牌和权限仍然很好)但是当我做的时候
client = Client(twitter_consumer_key, twitter_consumer_secret)
url = "https://api.twitter.com/1.1/application/rate_limit_status.json?resources=help,users,search,statuses"
print client.request( url)
Run Code Online (Sandbox Code Playgroud)
我回来了
{u'rate_limit_context': {u'application': u'AZljARxCJ6b4rPtCGJIuk4O'}, u'resources': {}}
Run Code Online (Sandbox Code Playgroud)
资源空的地方.我看不到每个端点剩余多少API调用,这导致我的应用程序出现问题.我没有看到任何关于此端点应该更改的内容:https://developer.twitter.com/en/docs/developer-utilities/rate-limit-status/api-reference/get-application-rate_limit_status.html
我可以打其他电话.例如
client.request("https://api.twitter.com/1.1/users/lookup.json?screen_name=twitter")
Run Code Online (Sandbox Code Playgroud)
按预期工作并返回数据....其他任何有这个问题围绕速率限制api端点?难道我做错了什么?
我有一个开发服务器,其中包含可以编辑的数据库副本和具有不同状态的同一数据库的实时真实服务器.要将数据库从dev移动到live我从dev服务器运行:
mysqldump -u root -p --opt db_name tbl_name | mysql -u user_name -p --host=live_IP -C db_name
Run Code Online (Sandbox Code Playgroud)
使用db_name,tbl_name,user_name和live_IP中的相应值.但是,这会将当前服务器上的表格删除并复制开发版本 - 有效地覆盖所有内容并将实时表中的任何新数据丢弃.我真正想要的是在开发服务器中有新行,并且冲突行来自开发服务器的副本,但实时服务器副本中的任何新行保持不变.这是某种合并,我无法在文档中找到任何类似的内容,但它似乎应该是可能的,因为它是一个常见的需求.
我正在尝试使用一个表单字段(只是一个普通的html文本输入框),可以输入并更改值,但将文本呈现为不可见.
我需要这个盒子是可见的,visibility: hidden;或者display: none;不会这样做.
我不能只使文本与背景颜色相同,因为背景不是单一颜色.我需要文本不可见,而其余输入仍然可见.
我试图实现的效果就像在终端中输入密码并接受输入但没有反馈(这不是密码).
我有一张桌子,平均约有2至5百万行.它有一个名为'instruction_id'的主键/索引和另一个名为'mode'的索引字段.现在'instruction_id'当然是唯一的,因为它是主键,但'mode'只是3个不同值中的一个.我一直运行的查询是
SELECT * FROM tablename WHERE mode = 'value1' ORDER BY instruction_id LIMIT 50
Run Code Online (Sandbox Code Playgroud)
这目前大约需要25秒(> 1秒是不可接受的长)但是现在只有600K行,所以随着表的增长它会变得更糟.以不同的方式索引会有帮助吗?如果我将instruction_id和mode一起索引会产生影响吗?如果我能以某种方式自然地通过instruction_id对表进行排序,那么我不需要通过另一种方式来询问订单,但我不知道如何做到这一点......任何帮助都会很棒.
我有一个网页,您可以使用自己的帐户登录.这个想法是,当你按下你的名字时,会出现一个小方块(类似于stackoverflow所做的)以及你的一些基本信息(名称,电子邮件等).它是php,css和javascript的混合,但php只能选择用户的名字.所以,我有以下代码:
<style type="text/css">
table.UserInfo
{
background-color:#000;
width:100;
height:100;
position:fixed;
top:10px;
right:10px;
}
p.UserText
{
color:#FFF;
}
</style>
<script type="text/javascript">
function showUser()
{
//Unknown code here
}
</script>
Run Code Online (Sandbox Code Playgroud)
在页面的某些部分......:欢迎访客!
实际上访问者通过php设置为登录的用户或访问者(如果没有).这是方框:
<table class='UserInfo' id='UserInfo' >
<tr>
<td><p class='UserText'>This user is a guest user. There is no information available.</p></td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
因此,当我按下访问者时,我需要显示该框,因此代码将显示在showUser()中,我需要知道我必须放置我的javascript代码,以便最初隐藏框.对于我按下它时显示的框,我尝试将此代码放在showUser()函数中:
document.getElementById('UserInfo')style.visibility = 'hidden';
Run Code Online (Sandbox Code Playgroud)
但它没有用.我把它隐藏起来,因为它开始是可见的.
谢谢
我正在寻找一种方法,我可以在十六进制字符串上进行按位操作(对于加密,因此主要是xor),这可能比我想要在Long中更长.作为一个例子,我可以有一个冗长的十六进制文字我想与其他数据xor.下面是我想要做的以及我现在如何做的一个例子,但我相信在某些限制下,计算机将达到它可以放入Long的限制,那么我怎样才能更强大地做到这一点?
#assuming lengths of messages are correct and key length as well
old_hex = "top secret ascii message".encode('hex')
encoded = "09e1c5f70a65ac56e55ac519458e7e53f36" #a literal hex encoded string
key_hex = int(old_hex,16) ^ int(encoded,16) #this currently works because this fits in Long
new_hex = "my new message to send 2".encode('hex')
ans_hex = key_hex ^ int(new_hex,16)
print 'old message in hex: 0x'+old_hex
print 'found a key in hex: '+str(hex(key_hex))
print 'new message in hex: 0x'+new_hex
print 'new message encode: '+str(hex(ans_hex))
Run Code Online (Sandbox Code Playgroud)
所以我会想要在更长的字符串上进行XOR,而且我担心它们不适合Long变量,所以我该如何解决这个问题呢?我是否必须将字符串分成较小的块并通过操作完成每个部分?
mysql ×3
php ×3
css ×2
javascript ×2
python ×2
algorithm ×1
arrays ×1
binary ×1
class ×1
compression ×1
encryption ×1
forms ×1
function ×1
gd ×1
hex ×1
html ×1
image ×1
in-clause ×1
indexing ×1
jpeg ×1
key ×1
logic ×1
math ×1
merge ×1
mysqldump ×1
performance ×1
sql ×1
sttwitterapi ×1
svn ×1
twitter ×1
visibility ×1
xor ×1